mirror of
https://github.com/alacritty/alacritty.git
synced 2024-11-18 13:55:23 -05:00
Add strikeout metrics for macos
Macos doesn't provide their own strikeout metrics, so instead of using the font metrics a fallback is used. Since this seems to be stored separately on freetype too, there might be a different way to get strikeout position and thickness (without CoreText)
This commit is contained in:
parent
8d3febccd1
commit
2a98f36328
2 changed files with 23 additions and 16 deletions
32
font/Cargo.lock
generated
32
font/Cargo.lock
generated
|
@ -28,16 +28,16 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "core-foundation"
|
name = "core-foundation"
|
||||||
version = "0.4.6"
|
version = "0.5.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"core-foundation-sys 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "core-foundation-sys"
|
name = "core-foundation-sys"
|
||||||
version = "0.4.6"
|
version = "0.5.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -45,22 +45,22 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "core-graphics"
|
name = "core-graphics"
|
||||||
version = "0.12.4"
|
version = "0.13.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"core-foundation 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "core-text"
|
name = "core-text"
|
||||||
version = "8.0.0"
|
version = "9.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"core-foundation 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"core-graphics 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"core-graphics 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
@ -87,10 +87,10 @@ dependencies = [
|
||||||
name = "font"
|
name = "font"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"core-foundation 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"core-foundation-sys 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"core-graphics 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"core-graphics 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"core-text 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"core-text 9.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"euclid 0.16.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"euclid 0.16.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"freetype-rs 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"freetype-rs 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -259,10 +259,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
"checksum cc 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "deaf9ec656256bb25b404c51ef50097207b9cbb29c933d31f92cae5a8a0ffee0"
|
"checksum cc 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "deaf9ec656256bb25b404c51ef50097207b9cbb29c933d31f92cae5a8a0ffee0"
|
||||||
"checksum cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de"
|
"checksum cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de"
|
||||||
"checksum cmake 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "56d741ea7a69e577f6d06b36b7dff4738f680593dc27a701ffa8506b73ce28bb"
|
"checksum cmake 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "56d741ea7a69e577f6d06b36b7dff4738f680593dc27a701ffa8506b73ce28bb"
|
||||||
"checksum core-foundation 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8047f547cd6856d45b1cdd75ef8d2f21f3d0e4bf1dab0a0041b0ae9a5dda9c0e"
|
"checksum core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "286e0b41c3a20da26536c6000a280585d519fd07b3956b43aed8a79e9edce980"
|
||||||
"checksum core-foundation-sys 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "152195421a2e6497a8179195672e9d4ee8e45ed8c465b626f1606d27a08ebcd5"
|
"checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa"
|
||||||
"checksum core-graphics 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8de78908c558a9ba526877d165635c9eaed0818a785a93efddde1c5bfd2ce5d1"
|
"checksum core-graphics 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb0ed45fdc32f9ab426238fba9407dfead7bacd7900c9b4dd3f396f46eafdae3"
|
||||||
"checksum core-text 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bcad23756dd1dc4b47bf6a914ace27aadb8fa68889db5837af2308d018d0467c"
|
"checksum core-text 9.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2bd581c37283d0c23311d179aefbb891f2324ee0405da58a26e8594ab76e5748"
|
||||||
"checksum euclid 0.16.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d33ed9630f5f7a86abb0849e96a585922cc5a640478a36f05f74d96a22655f"
|
"checksum euclid 0.16.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d33ed9630f5f7a86abb0849e96a585922cc5a640478a36f05f74d96a22655f"
|
||||||
"checksum expat-sys 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c470ccb972f2088549b023db8029ed9da9426f5affbf9b62efff7009ab8ed5b1"
|
"checksum expat-sys 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c470ccb972f2088549b023db8029ed9da9426f5affbf9b62efff7009ab8ed5b1"
|
||||||
"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
|
"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
|
||||||
|
|
|
@ -422,8 +422,13 @@ impl Font {
|
||||||
let descent = self.ct_font.descent() as f64;
|
let descent = self.ct_font.descent() as f64;
|
||||||
let leading = self.ct_font.leading() as f64;
|
let leading = self.ct_font.leading() as f64;
|
||||||
let line_height = (ascent + descent + leading + 0.5).floor();
|
let line_height = (ascent + descent + leading + 0.5).floor();
|
||||||
|
|
||||||
|
// Strikeout and underline metrics
|
||||||
|
// CoreText doesn't provide strikeout so we provide our own
|
||||||
let underline_position = self.ct_font.underline_position() as f32;
|
let underline_position = self.ct_font.underline_position() as f32;
|
||||||
let underline_thickness = self.ct_font.underline_thickness() as f32;
|
let underline_thickness = self.ct_font.underline_thickness() as f32;
|
||||||
|
let strikeout_position = line_height as f32 / 2. + descent as f32;
|
||||||
|
let strikeout_thickness = underline_thickness;
|
||||||
|
|
||||||
Metrics {
|
Metrics {
|
||||||
average_advance: average_advance,
|
average_advance: average_advance,
|
||||||
|
@ -431,6 +436,8 @@ impl Font {
|
||||||
descent: -(self.ct_font.descent() as f32),
|
descent: -(self.ct_font.descent() as f32),
|
||||||
underline_position,
|
underline_position,
|
||||||
underline_thickness,
|
underline_thickness,
|
||||||
|
strikeout_position,
|
||||||
|
strikeout_thickness,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue