diff options
Diffstat (limited to 'src/unistring.h')
-rw-r--r-- | src/unistring.h | 12 |
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 << ' '; |