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

Fixed rendering of Thai and units of char spacing

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