Commit 4032a2e6124313fdef1c44b3d9d0721cacd6e4c3
1 parent
4ccf5c18
Exists in
master
and in
1 other branch
Working on bug related with windows fonts resize.
Showing
1 changed file
with
43 additions
and
5 deletions
Show diff stats
src/terminal/font.c
@@ -81,7 +81,6 @@ void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, unsigned int width, | @@ -81,7 +81,6 @@ void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, unsigned int width, | ||
81 | 81 | ||
82 | cairo_select_font_face(cr,terminal->font.family, CAIRO_FONT_SLANT_NORMAL,terminal->font.weight); | 82 | cairo_select_font_face(cr,terminal->font.family, CAIRO_FONT_SLANT_NORMAL,terminal->font.weight); |
83 | 83 | ||
84 | - /* | ||
85 | if(terminal->font.scaled) | 84 | if(terminal->font.scaled) |
86 | { | 85 | { |
87 | 86 | ||
@@ -89,7 +88,36 @@ void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, unsigned int width, | @@ -89,7 +88,36 @@ void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, unsigned int width, | ||
89 | // double h = ((double) height) / ((double) ((rows + OIA_TOP_MARGIN + 3))); | 88 | // double h = ((double) height) / ((double) ((rows + OIA_TOP_MARGIN + 3))); |
90 | // double s = (w < h) ? w : h; | 89 | // double s = (w < h) ? w : h; |
91 | 90 | ||
92 | - double s = 0.1; | 91 | + double s = 0; |
92 | + double selected = 0; | ||
93 | + | ||
94 | + do | ||
95 | + { | ||
96 | + selected = s; | ||
97 | + | ||
98 | + s += 0.5; | ||
99 | + cairo_set_font_size(cr,s); | ||
100 | + cairo_font_extents(cr,&extents); | ||
101 | + | ||
102 | + debug("font_size=%lf x_advance=%lf y_advance=%lf font_extents=%u+%u font_height=%u view_height=%u view_width=%u", | ||
103 | + s, | ||
104 | + extents.max_x_advance, | ||
105 | + extents.max_y_advance, | ||
106 | + (unsigned int) extents.height, (unsigned int) extents.descent, | ||
107 | + VIEW_HEIGTH_FROM_FONT( (unsigned int) (extents.height + extents.descent) ), | ||
108 | + height, | ||
109 | + VIEW_WIDTH_FROM_FONT(extents.max_x_advance) | ||
110 | + ); | ||
111 | + | ||
112 | + } while( (VIEW_HEIGTH_FROM_FONT( (extents.height+extents.descent) ) < height) && (VIEW_WIDTH_FROM_FONT(extents.max_x_advance) < width) ); | ||
113 | + | ||
114 | + debug("Selected size=%lf",selected); | ||
115 | + | ||
116 | + cairo_set_font_size(cr,selected); | ||
117 | + cairo_font_extents(cr,&extents); | ||
118 | + | ||
119 | + | ||
120 | + /* | ||
93 | 121 | ||
94 | cairo_set_font_size(cr,s); | 122 | cairo_set_font_size(cr,s); |
95 | cairo_font_extents(cr,&extents); | 123 | cairo_font_extents(cr,&extents); |
@@ -99,15 +127,25 @@ void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, unsigned int width, | @@ -99,15 +127,25 @@ void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, unsigned int width, | ||
99 | s += 0.5; | 127 | s += 0.5; |
100 | cairo_set_font_size(cr,s); | 128 | cairo_set_font_size(cr,s); |
101 | cairo_font_extents(cr,&extents); | 129 | cairo_font_extents(cr,&extents); |
130 | + | ||
131 | + debug("font_size=%lf x_advance=%lf y_advance=%lf font_extents=%u+%u font_height=%u view_height=%u view_width=%u", | ||
132 | + s, | ||
133 | + extents.max_x_advance, | ||
134 | + extents.max_y_advance, | ||
135 | + (unsigned int) extents.height, (unsigned int) extents.descent, | ||
136 | + VIEW_HEIGTH_FROM_FONT( (unsigned int) (extents.height + extents.descent) ), | ||
137 | + height, | ||
138 | + VIEW_WIDTH_FROM_FONT(extents.max_x_advance) | ||
139 | + ); | ||
140 | + | ||
102 | } | 141 | } |
103 | 142 | ||
104 | s -= 0.5; | 143 | s -= 0.5; |
144 | + */ | ||
105 | 145 | ||
106 | - cairo_set_font_size(cr,s < 1.0 ? 1.0 : s); | ||
107 | - cairo_font_extents(cr,&extents); | ||
108 | 146 | ||
109 | } | 147 | } |
110 | - else */ | 148 | + else |
111 | { | 149 | { |
112 | static const unsigned int font_size[] = { 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 20, 22, 24, 26, 28, 32, 36, 40, 48, 56, 64, 72 }; | 150 | static const unsigned int font_size[] = { 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 20, 22, 24, 26, 28, 32, 36, 40, 48, 56, 64, 72 }; |
113 | size_t f; | 151 | size_t f; |