opentype
1.0.0
Пакет предоставляет строитель и анализатор шрифтов Opentype. Возможно, было бы полезно взглянуть на абстракцию более высокого уровня под названием font , которая внутренне полагается на этот пакет.
use opentype :: truetype :: tables :: names :: { Names , NameID } ;
use opentype :: truetype :: tables :: { FontHeader , HorizontalHeader } ;
use opentype :: File ;
macro_rules! ok ( ( $result : expr ) => ( $result . unwrap ( ) ) ) ;
let path = "SourceSerifPro-Regular.otf" ;
let mut tape = ok ! ( std :: fs :: File :: open ( path ) ) ;
let File { mut fonts } = ok ! ( File :: read ( & mut tape ) ) ;
let font_header : FontHeader = ok ! ( ok! ( fonts [ 0 ] . take ( & mut tape ) ) ) ;
assert_eq ! ( font_header . units_per_em , 1000 ) ;
let horizontal_header : HorizontalHeader = ok ! ( ok! ( fonts [ 0 ] . take ( & mut tape ) ) ) ;
assert_eq ! ( horizontal_header . ascender , 918 ) ;
let names : Names = ok ! ( ok! ( fonts [ 0 ] . take ( & mut tape ) ) ) ;
let names = names
. iter ( )
. map ( | ( ( _ , _ , _ , name_id ) , value ) | ( name_id , value ) )
. collect :: < std :: collections :: HashMap < _ , _ > > ( ) ;
assert_eq ! ( ok! ( names [ & NameID :: FullFontName ] . as_ref ( ) ) , "Source Serif Pro" ) ;
assert_eq ! ( ok! ( names [ & NameID :: DesignerName ] . as_ref ( ) ) , "Frank Grießhammer" ) ; Ваш вклад высоко ценится. Не стесняйтесь открыть проблему или запрос на тягу. Обратите внимание, что любой вклад, представленный для включения в проект, будет лицензирован в соответствии с условиями, указанными в лицензии. MD.