summaryrefslogtreecommitdiff
path: root/src/unistring.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/unistring.h')
-rw-r--r--src/unistring.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/unistring.h b/src/unistring.h
index 8e963f37..7d78d134 100644
--- a/src/unistring.h
+++ b/src/unistring.h
@@ -44,6 +44,8 @@
namespace ledger {
+int mk_wcwidth_cjk(boost::uint32_t ucs);
+
/**
* @class unistring
*
@@ -81,6 +83,14 @@ public:
return utf32chars.size();
}
+ std::size_t width() const {
+ std::size_t width = 0;
+ foreach (const boost::uint32_t& ch, utf32chars) {
+ width += mk_wcwidth_cjk(ch);
+ }
+ return width;
+ }
+
std::string extract(const std::string::size_type begin = 0,
const std::string::size_type len = 0) const
{
@@ -133,7 +143,7 @@ inline void justify(std::ostream& out,
unistring temp(str);
- int spacing = width - int(temp.length());
+ int spacing = width - int(temp.width());
while (spacing-- > 0)
out << ' ';