Commit 4032a2e6124313fdef1c44b3d9d0721cacd6e4c3

Authored by Perry Werneck
1 parent 4ccf5c18
Exists in master and in 1 other branch develop

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 81  
82 82 cairo_select_font_face(cr,terminal->font.family, CAIRO_FONT_SLANT_NORMAL,terminal->font.weight);
83 83  
84   - /*
85 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 88 // double h = ((double) height) / ((double) ((rows + OIA_TOP_MARGIN + 3)));
90 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 122 cairo_set_font_size(cr,s);
95 123 cairo_font_extents(cr,&extents);
... ... @@ -99,15 +127,25 @@ void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, unsigned int width,
99 127 s += 0.5;
100 128 cairo_set_font_size(cr,s);
101 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 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 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 151 size_t f;
... ...