mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Update truetype (#31313)
This commit is contained in:
parent
07c7096246
commit
81a543e41c
3 changed files with 24 additions and 22 deletions
8
Cargo.lock
generated
8
Cargo.lock
generated
|
@ -6270,9 +6270,9 @@ checksum = "ce607aae8ab0ab3abf3a2723a9ab6f09bb8639ed83fdd888d857b8e556c868d8"
|
|||
|
||||
[[package]]
|
||||
name = "truetype"
|
||||
version = "0.40.1"
|
||||
version = "0.47.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ded349527e54edfdbfb6db194f6da69b15a5fa811dd3fdfd691882290cb45d17"
|
||||
checksum = "cef21dc120b50cec529152c8862800f7f5fa13a2ec8d174cc643aed7af4d2417"
|
||||
dependencies = [
|
||||
"typeface",
|
||||
]
|
||||
|
@ -6317,9 +6317,9 @@ checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a"
|
|||
|
||||
[[package]]
|
||||
name = "typeface"
|
||||
version = "0.2.7"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bf610e8cc23b65075cc984c5b3dd40ea77849189f395b2604e059c00558b719b"
|
||||
checksum = "3a51fd676d85b67be6a48da89094f5d8e24939c05694976379935517ba958c16"
|
||||
|
||||
[[package]]
|
||||
name = "typenum"
|
||||
|
|
|
@ -59,4 +59,4 @@ xml-rs = "0.8"
|
|||
|
||||
[target.'cfg(target_os = "windows")'.dependencies]
|
||||
dwrote = "0.11"
|
||||
truetype = { version = "0.40.0", features = ["ignore-invalid-language-ids"] }
|
||||
truetype = { version = "0.47.3", features = ["ignore-invalid-language-ids"] }
|
||||
|
|
|
@ -89,27 +89,29 @@ impl FontInfo {
|
|||
use std::collections::HashMap;
|
||||
use std::io::Cursor;
|
||||
|
||||
use truetype::naming_table::{NameID, NamingTable};
|
||||
use truetype::{Value, WindowsMetrics};
|
||||
use truetype::tables::names::{NameID, Names};
|
||||
use truetype::tables::WindowsMetrics;
|
||||
use truetype::value::Read;
|
||||
|
||||
let name_table_bytes = face.get_font_table(make_tag(b"name"));
|
||||
let os2_table_bytes = face.get_font_table(make_tag(b"OS/2"));
|
||||
if name_table_bytes.is_none() || os2_table_bytes.is_none() {
|
||||
let names_bytes = face.get_font_table(make_tag(b"name"));
|
||||
let windows_metrics_bytes = face.get_font_table(make_tag(b"OS/2"));
|
||||
if names_bytes.is_none() || windows_metrics_bytes.is_none() {
|
||||
return Err(());
|
||||
}
|
||||
|
||||
let mut name_table_cursor = Cursor::new(name_table_bytes.as_ref().unwrap());
|
||||
let names = try_lossy!(NamingTable::read(&mut name_table_cursor));
|
||||
let mut names: HashMap<_, _> = names
|
||||
let mut cursor = Cursor::new(names_bytes.as_ref().unwrap());
|
||||
let table = try_lossy!(Names::read(&mut cursor));
|
||||
let language_tags = table.language_tags().collect::<Vec<_>>();
|
||||
let mut names = table
|
||||
.iter()
|
||||
.filter(|((_, language_tag), value)| {
|
||||
.filter(|((_, _, language_id, _), value)| {
|
||||
value.is_some() &&
|
||||
language_tag
|
||||
.as_deref()
|
||||
.map_or(false, |language_tag| language_tag.starts_with("en"))
|
||||
language_id
|
||||
.tag(&language_tags)
|
||||
.map_or(false, |tag| tag.starts_with("en"))
|
||||
})
|
||||
.map(|((name_id, _), value)| (name_id, value.unwrap()))
|
||||
.collect();
|
||||
.map(|((_, _, _, name_id), value)| (name_id, value.unwrap()))
|
||||
.collect::<HashMap<_, _>>();
|
||||
let family = match names.remove(&NameID::FontFamilyName) {
|
||||
Some(family) => family,
|
||||
_ => return Err(()),
|
||||
|
@ -119,9 +121,9 @@ impl FontInfo {
|
|||
_ => return Err(()),
|
||||
};
|
||||
|
||||
let mut os2_table_cursor = Cursor::new(os2_table_bytes.as_ref().unwrap());
|
||||
let metrics = try_lossy!(WindowsMetrics::read(&mut os2_table_cursor));
|
||||
let (weight_val, width_val, italic_bool) = match metrics {
|
||||
let mut cursor = Cursor::new(windows_metrics_bytes.as_ref().unwrap());
|
||||
let table = try_lossy!(WindowsMetrics::read(&mut cursor));
|
||||
let (weight_val, width_val, italic_bool) = match table {
|
||||
WindowsMetrics::Version0(ref m) => {
|
||||
(m.weight_class, m.width_class, m.selection_flags.0 & 1 == 1)
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue