fc-fontations/foundries.rs | 4 ++-- fc-fontations/mod.rs | 18 +++++++++++++++--- fc-fontations/pattern_bindings/mod.rs | 6 ++++++ test/test_fontations_ft_query.py | 1 + 4 files changed, 24 insertions(+), 5 deletions(-) New commits: commit 2fdcfb46c5cfb3d7e534f73b3b417a68df4560a4 Merge: 86fd90c 91086d5 Author: Akira TAGOH <akira@xxxxxxxxx> Date: Wed May 7 05:41:54 2025 +0000 Merge branch 'version' into 'main' [Fontations] Add support for "version" pattern element See merge request fontconfig/fontconfig!395 commit 91086d5b9a1a4a8d77f768b93b2cac8c83749714 Author: Dominik Röttsches <drott@xxxxxxxxxxxx> Date: Mon May 5 12:23:52 2025 +0300 [Fontations] Clippy fix for foundries mapping diff --git a/fc-fontations/foundries.rs b/fc-fontations/foundries.rs index d416d9f..ad60647 100644 --- a/fc-fontations/foundries.rs +++ b/fc-fontations/foundries.rs @@ -63,7 +63,7 @@ pub fn make_foundry(font: &FontRef) -> Option<CString> { return CString::new(os2.ach_vend_id().to_be_bytes()).ok(); } - return map_foundry_from_name_entry(&mut font.localized_strings(StringId::TRADEMARK)).or_else( + map_foundry_from_name_entry(&mut font.localized_strings(StringId::TRADEMARK)).or_else( || map_foundry_from_name_entry(&mut font.localized_strings(StringId::MANUFACTURER)), - ); + ) } commit d6ec5911c3e6e123238f797848cb58f290e3a266 Author: Dominik Röttsches <drott@xxxxxxxxxxxx> Date: Fri Apr 25 16:01:41 2025 +0300 [Fontations] Add support for "version" pattern element Parse version from head table. diff --git a/fc-fontations/mod.rs b/fc-fontations/mod.rs index 272b8d3..26754ff 100644 --- a/fc-fontations/mod.rs +++ b/fc-fontations/mod.rs @@ -22,17 +22,17 @@ * PERFORMANCE OF THIS SOFTWARE. */ +mod foundries; mod names; mod pattern_bindings; -mod foundries; use foundries::make_foundry; use names::add_names; use fc_fontations_bindgen::{ fcint::{ - FC_COLOR_OBJECT, FC_FONTFORMAT_OBJECT, FC_FONT_HAS_HINT_OBJECT, FC_FOUNDRY_OBJECT, - FC_OUTLINE_OBJECT, FC_SCALABLE_OBJECT, + FC_COLOR_OBJECT, FC_FONTFORMAT_OBJECT, FC_FONTVERSION_OBJECT, FC_FONT_HAS_HINT_OBJECT, + FC_FOUNDRY_OBJECT, FC_OUTLINE_OBJECT, FC_SCALABLE_OBJECT, }, FcFontSet, FcFontSetAdd, FcPattern, }; @@ -188,6 +188,18 @@ fn build_patterns_for_font( foundry_string.into(), )); + let version = font + .head() + .ok() + .map(|head| head.font_revision()) + .unwrap_or_default() + .to_bits(); + + pattern.append_element(PatternElement::new( + FC_FONTVERSION_OBJECT as i32, + version.into(), + )); + pattern .create_fc_pattern() .map(|p| p.into_raw() as *mut FcPattern) diff --git a/fc-fontations/pattern_bindings/mod.rs b/fc-fontations/pattern_bindings/mod.rs index 623b8bb..29359e9 100644 --- a/fc-fontations/pattern_bindings/mod.rs +++ b/fc-fontations/pattern_bindings/mod.rs @@ -61,6 +61,12 @@ impl From<bool> for PatternValue { } } +impl From<i32> for PatternValue { + fn from(item: i32) -> Self { + PatternValue::Integer(item) + } +} + #[derive(Debug)] pub struct PatternElement { object_id: i32, diff --git a/test/test_fontations_ft_query.py b/test/test_fontations_ft_query.py index 706b564..c08b16e 100644 --- a/test/test_fontations_ft_query.py +++ b/test/test_fontations_ft_query.py @@ -61,6 +61,7 @@ def test_fontations_freetype_fcquery_equal(font_file): "color", "fonthashint", "foundry", + "version", ] format_string = ":".join( "%{" + entity + "}" for entity in supported_format_entitites