提交 c773eb57 编写于 作者: R Ray Smith

Fixed rendering of Thai and units of char spacing

上级 e96d1df0
......@@ -188,13 +188,14 @@ void StringRenderer::SetLayoutProperties() {
swap(max_width, max_height);
}
pango_layout_set_width(layout_, max_width * PANGO_SCALE);
pango_layout_set_wrap(layout_, PANGO_WRAP_WORD);
// Ultra-wide Thai strings need to wrap at char level.
pango_layout_set_wrap(layout_, PANGO_WRAP_WORD_CHAR);
// Adjust character spacing
PangoAttrList* attr_list = pango_attr_list_new();
if (char_spacing_) {
PangoAttribute* spacing_attr = pango_attr_letter_spacing_new(
static_cast<int>(char_spacing_ * PANGO_SCALE + 0.5));
PangoAttribute* spacing_attr =
pango_attr_letter_spacing_new(char_spacing_ * PANGO_SCALE);
spacing_attr->start_index = 0;
spacing_attr->end_index = static_cast<guint>(-1);
pango_attr_list_change(attr_list, spacing_attr);
......
......@@ -64,9 +64,8 @@ class StringRenderer {
int text_length, string* font_used, Pix** pix);
bool set_font(const string& desc);
void set_char_spacing(double char_spacing) {
char_spacing_ = char_spacing;
}
// Char spacing is in PIXELS!!!!.
void set_char_spacing(int char_spacing) { char_spacing_ = char_spacing; }
void set_leading(int leading) {
leading_ = leading;
}
......@@ -180,7 +179,7 @@ class StringRenderer {
int page_width_, page_height_, h_margin_, v_margin_;
// Text rendering properties
double pen_color_[3];
double char_spacing_;
int char_spacing_;
int leading_, resolution_;
bool vertical_text_;
bool gravity_hint_strong_;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册