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; |