New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Gather font metrics for FreeType fonts #76
Labels
P-linux
Any Linux OS capable of running Servo
Comments
Most of the metrics are there, but x-height and leading are still missing. |
This looks like missing/wrong kerning or glyph advance information. Can you show a screenshot of firefox rendering the same page with the same font? |
Also, it should be finding an italicized font face for this test. Might be a separate bug. |
dhedlund
added a commit
to dhedlund/servo
that referenced
this issue
Dec 8, 2013
bors-servo
pushed a commit
that referenced
this issue
Dec 9, 2013
Fixes #76. Implemented the only font metric remaining to resolve issue #76 for the Linux platform. There are still some variations between Linux and OS X font metrics. Looking at values for the "Times New Roman" font, the following metrics differed by over 10%: `leading`, `x_height` and `max_advance`. It was not obvious if this would create any major difference in rendering, or whether the discrepancies would be handled in platform specific ways during the rendering process. Only `x_height` is being used by existing code. The `leading` property under Linux is still an order of magnitude off from the OS X version, but they are computed with similar calculations. Issue #1355 has been opened to further investigate the discrepancies. #### Platform comparison of font metrics for "Times New Roman" between Linux and OS X: **Au** is the raw metric values stored in the `FontMetrics` struct. **% of em** is how large that value is relative to the raw `em_size` of the font as a percentage. Linux reports the pt size differently than OS X, but this is probably because the linux platform uses hard-coded points-per-inch value (hard-coded in `src/components/util/geometry.rs`), whereas OS X uses the points-per-inch value provided by the font library. +-----------------------------------+ +-----------------------------------+ | Linux (@14.25pt, 1.33em) | | OS X (@19.35pt, 1.0em) | +------------------+------+---------+ +------------------+------+---------+ | property | Au | % of em | | property | Au | % of em | +------------------+------+---------+ +------------------+------+---------+ | underline_size | 55 | 4.82 | | underline_size | 60 | 5.17 | | underline_offset | -151 | -13.25 | | underline_offset | -120 | -10.34 | | strikeout_size | 56 | 4.91 | | strikeout_size | 0 | 0.00 | | strikeout_offset | 295 | 25.88 | | strikeout_offset | 0 | 0.00 | | leading | 541 | 47.45 | | leading | 60 | 5.17 | | x_height | 1015 | 89.04 | | x_height | 660 | 56.85 | | em_size | 1140 | 100.00 | | em_size | 1161 | 100.00 | | ascent | 1015 | 89.04 | | ascent | 893 | 76.92 | | descent | 246 | 21.58 | | descent | 203 | 17.48 | | max_advance | 1199 | 105.18 | | max_advance | 2820 | 242.89 | +------------------+------+---------+ +------------------+------+---------+ +-----------------------------------+ +-----------------------------------+ | Linux (@24pt, 1.33em) | | OS X (@32.683333pt, 1.0em) | +------------------+------+---------+ +------------------+------+---------+ | property | Au | % of em | | property | Au | % of em | +------------------+------+---------+ +------------------+------+---------+ | underline_size | 93 | 4.84 | | underline_size | 120 | 6.12 | | underline_offset | -255 | -13.28 | | underline_offset | -240 | -12.24 | | strikeout_size | 95 | 4.95 | | strikeout_size | 0 | 0.00 | | strikeout_offset | 496 | 25.83 | | strikeout_offset | 0 | 0.00 | | leading | 912 | 47.50 | | leading | 60 | 3.06 | | x_height | 1710 | 89.06 | | x_height | 1080 | 55.10 | | em_size | 1920 | 100.00 | | em_size | 1960 | 100.00 | | ascent | 1710 | 89.06 | | ascent | 1544 | 78.77 | | descent | 415 | 21.61 | | descent | 365 | 18.62 | | max_advance | 2020 | 105.21 | | max_advance | 4740 | 241.84 | +------------------+------+---------+ +------------------+------+---------+ +-----------------------------------+ +-----------------------------------+ | Linux (@45pt, 1.33em) | | OS X (@60.833333pt, 1.0em) | +------------------+------+---------+ +------------------+------+---------+ | property | Au | % of em | | property | Au | % of em | +------------------+------+---------+ +------------------+------+---------+ | underline_size | 175 | 4.86 | | underline_size | 180 | 4.93 | | underline_offset | -479 | -13.31 | | underline_offset | -480 | -13.15 | | strikeout_size | 179 | 4.97 | | strikeout_size | 0 | 0.00 | | strikeout_offset | 931 | 25.86 | | strikeout_offset | 0 | 0.00 | | leading | 1709 | 47.47 | | leading | 180 | 4.93 | | x_height | 3208 | 89.11 | | x_height | 2040 | 55.89 | | em_size | 3600 | 100.00 | | em_size | 3650 | 100.00 | | ascent | 3208 | 89.11 | | ascent | 2925 | 80.14 | | descent | 778 | 21.61 | | descent | 690 | 18.90 | | max_advance | 3788 | 105.22 | | max_advance | 8880 | 243.29 | +------------------+------+---------+ +------------------+------+---------+ +-----------------------------------+ +-----------------------------------+ | Linux (@30.75pt, 1.33em) | | OS X (@41.9pt, 1.0em) | +------------------+------+---------+ +------------------+------+---------+ | property | Au | % of em | | property | Au | % of em | +------------------+------+---------+ +------------------+------+---------+ | underline_size | 120 | 4.88 | | underline_size | 120 | 4.77 | | underline_offset | -327 | -13.29 | | underline_offset | -360 | -14.32 | | strikeout_size | 122 | 4.95 | | strikeout_size | 0 | 0.00 | | strikeout_offset | 636 | 25.85 | | strikeout_offset | 0 | 0.00 | | leading | 1168 | 47.47 | | leading | 120 | 4.77 | | x_height | 2192 | 89.11 | | x_height | 1440 | 57.27 | | em_size | 2460 | 100.00 | | em_size | 2514 | 100.00 | | ascent | 2192 | 89.11 | | ascent | 1991 | 79.20 | | descent | 532 | 21.63 | | descent | 487 | 19.37 | | max_advance | 2588 | 105.20 | | max_advance | 6120 | 243.44 | +------------------+------+---------+ +------------------+------+---------+
therealglazou
pushed a commit
to therealglazou/servo
that referenced
this issue
Feb 20, 2014
glennw
added a commit
to glennw/servo
that referenced
this issue
Jan 16, 2017
Unify clip rects and clip regions into a single "combined clip region" structure, and clip inset box shadows to rounded rectangle corners.
jdm
pushed a commit
to jdm/servo
that referenced
this issue
Mar 6, 2021
Increase default JS heap size (from 8MB -> 32 MB) for testing large pages.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
In order to do line-height and baseline calculations properly, inline layout needs access to font metrics. I have implemented basic metrics gathering for Mac (through the CoreText
CTFont*
APIs). The same needs to be done for FreeType. I've stubbed out the implementation for now to return zero metrics.The text was updated successfully, but these errors were encountered: