<html><head> <link rel="stylesheet" href="style.css" type="text/css"> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <link rel="Start" href="index.html"> <link title="Index of types" rel=Appendix href="index_types.html"> <link title="Index of values" rel=Appendix href="index_values.html"> <link title="Index of modules" rel=Appendix href="index_modules.html"> <link title="Otfm" rel="Chapter" href="Otfm.html"><title>Otfm</title> </head> <body> <code class="code"><span class="keyword">sig</span><br> <span class="keyword">type</span> tag<br> <span class="keyword">module</span> <span class="constructor">Tag</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> t = <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> cmap : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> head : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> hhea : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> hmtx : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> maxp : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> name : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> os2 : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> post : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> cvt : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> fpgm : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> glyf : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> loca : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> prep : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> cff : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> vorg : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> ebdt : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> eblc : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> ebsc : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> dsig : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> gasp : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> hdmx : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> kern : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> ltsh : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> pclt : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> vdmx : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> vhea : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> vmtx : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> base : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> gdef : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> gpos : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> gsub : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> jstf : <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> of_bytes : string <span class="keywordsign">-></span> <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> to_bytes : <span class="constructor">Otfm</span>.tag <span class="keywordsign">-></span> string<br> <span class="keyword">val</span> to_int32 : <span class="constructor">Otfm</span>.tag <span class="keywordsign">-></span> int32<br> <span class="keyword">val</span> of_int32 : int32 <span class="keywordsign">-></span> <span class="constructor">Otfm</span>.tag<br> <span class="keyword">val</span> compare : <span class="constructor">Otfm</span>.tag <span class="keywordsign">-></span> <span class="constructor">Otfm</span>.tag <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> pp : <span class="constructor">Format</span>.formatter <span class="keywordsign">-></span> <span class="constructor">Otfm</span>.tag <span class="keywordsign">-></span> unit<br> <span class="keyword">end</span><br> <span class="keyword">type</span> cp = int<br> <span class="keyword">type</span> cp_range = <span class="constructor">Otfm</span>.cp * <span class="constructor">Otfm</span>.cp<br> <span class="keyword">val</span> is_cp : int <span class="keywordsign">-></span> bool<br> <span class="keyword">type</span> error_ctx = [ <span class="keywordsign">`</span><span class="constructor">Offset_table</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Table</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.tag <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Table_directory</span> ]<br> <span class="keyword">type</span> error =<br> [ <span class="keywordsign">`</span><span class="constructor">Invalid_cp</span> <span class="keyword">of</span> int<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Invalid_cp_range</span> <span class="keyword">of</span> int * int<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Invalid_offset</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.error_ctx * int<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Invalid_postscript_name</span> <span class="keyword">of</span> string<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Missing_required_table</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.tag<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Unexpected_eoi</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.error_ctx<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Unknown_flavour</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.tag<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Unknown_version</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.error_ctx * int32<br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Unsupported_TTC</span><br> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Unsupported_cmaps</span> <span class="keyword">of</span> (int * int * int) list ]<br> <span class="keyword">val</span> pp_error : <span class="constructor">Format</span>.formatter <span class="keywordsign">-></span> [< <span class="constructor">Otfm</span>.error ] <span class="keywordsign">-></span> unit<br> <span class="keyword">type</span> src = [ <span class="keywordsign">`</span><span class="constructor">String</span> <span class="keyword">of</span> string ]<br> <span class="keyword">type</span> decoder<br> <span class="keyword">val</span> decoder : [< <span class="constructor">Otfm</span>.src ] <span class="keywordsign">-></span> <span class="constructor">Otfm</span>.decoder<br> <span class="keyword">val</span> decoder_src : <span class="constructor">Otfm</span>.decoder <span class="keywordsign">-></span> <span class="constructor">Otfm</span>.src<br> <span class="keyword">type</span> flavour = [ <span class="keywordsign">`</span><span class="constructor">CFF</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">TTF</span> ]<br> <span class="keyword">val</span> flavour :<br> <span class="constructor">Otfm</span>.decoder <span class="keywordsign">-></span> [> <span class="keywordsign">`</span><span class="constructor">Error</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.error <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ok</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.flavour ]<br> <span class="keyword">val</span> table_list :<br> <span class="constructor">Otfm</span>.decoder <span class="keywordsign">-></span> [> <span class="keywordsign">`</span><span class="constructor">Error</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.error <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ok</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.tag list ]<br> <span class="keyword">val</span> table_mem :<br> <span class="constructor">Otfm</span>.decoder <span class="keywordsign">-></span> <span class="constructor">Otfm</span>.tag <span class="keywordsign">-></span> [> <span class="keywordsign">`</span><span class="constructor">Error</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.error <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ok</span> <span class="keyword">of</span> bool ]<br> <span class="keyword">val</span> table_raw :<br> <span class="constructor">Otfm</span>.decoder <span class="keywordsign">-></span><br> <span class="constructor">Otfm</span>.tag <span class="keywordsign">-></span> [> <span class="keywordsign">`</span><span class="constructor">Error</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.error <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ok</span> <span class="keyword">of</span> string option ]<br> <span class="keyword">val</span> glyph_count : <span class="constructor">Otfm</span>.decoder <span class="keywordsign">-></span> [> <span class="keywordsign">`</span><span class="constructor">Error</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.error <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ok</span> <span class="keyword">of</span> int ]<br> <span class="keyword">val</span> postscript_name :<br> <span class="constructor">Otfm</span>.decoder <span class="keywordsign">-></span> [> <span class="keywordsign">`</span><span class="constructor">Error</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.error <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ok</span> <span class="keyword">of</span> string option ]<br> <span class="keyword">type</span> glyph_id = int<br> <span class="keyword">type</span> map_kind = [ <span class="keywordsign">`</span><span class="constructor">Glyph</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Glyph_range</span> ]<br> <span class="keyword">val</span> cmap :<br> <span class="constructor">Otfm</span>.decoder <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="constructor">Otfm</span>.map_kind <span class="keywordsign">-></span> <span class="constructor">Otfm</span>.cp_range <span class="keywordsign">-></span> <span class="constructor">Otfm</span>.glyph_id <span class="keywordsign">-></span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> [> <span class="keywordsign">`</span><span class="constructor">Error</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.error <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ok</span> <span class="keyword">of</span> (int * int * int) * <span class="keywordsign">'</span>a ]<br> <span class="keyword">type</span> head = {<br> head_font_revision : int32;<br> head_flags : int;<br> head_units_per_em : int;<br> head_created : float;<br> head_modified : float;<br> head_xmin : int;<br> head_ymin : int;<br> head_xmax : int;<br> head_ymax : int;<br> head_mac_style : int;<br> head_lowest_rec_ppem : int;<br> head_index_to_loc_format : int;<br> }<br> <span class="keyword">val</span> head : <span class="constructor">Otfm</span>.decoder <span class="keywordsign">-></span> [> <span class="keywordsign">`</span><span class="constructor">Error</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.error <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ok</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.head ]<br> <span class="keyword">type</span> hhea = {<br> hhea_ascender : int;<br> hhea_descender : int;<br> hhea_line_gap : int;<br> hhea_advance_width_max : int;<br> hhea_min_left_side_bearing : int;<br> hhea_min_right_side_bearing : int;<br> hhea_xmax_extent : int;<br> hhea_caret_slope_rise : int;<br> hhea_caret_slope_run : int;<br> hhea_caret_offset : int;<br> }<br> <span class="keyword">val</span> hhea : <span class="constructor">Otfm</span>.decoder <span class="keywordsign">-></span> [> <span class="keywordsign">`</span><span class="constructor">Error</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.error <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ok</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.hhea ]<br> <span class="keyword">val</span> hmtx :<br> <span class="constructor">Otfm</span>.decoder <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="constructor">Otfm</span>.glyph_id <span class="keywordsign">-></span> int <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> [> <span class="keywordsign">`</span><span class="constructor">Error</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.error <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ok</span> <span class="keyword">of</span> <span class="keywordsign">'</span>a ]<br> <span class="keyword">type</span> lang = string<br> <span class="keyword">val</span> name :<br> <span class="constructor">Otfm</span>.decoder <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="constructor">Otfm</span>.lang <span class="keywordsign">-></span> string <span class="keywordsign">-></span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> [> <span class="keywordsign">`</span><span class="constructor">Error</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.error <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ok</span> <span class="keyword">of</span> <span class="keywordsign">'</span>a ]<br> <span class="keyword">type</span> os2 = {<br> os2_x_avg_char_width : int;<br> os2_us_weight_class : int;<br> os2_us_width_class : int;<br> os2_fs_type : int;<br> os2_y_subscript_x_size : int;<br> os2_y_subscript_y_size : int;<br> os2_y_subscript_x_offset : int;<br> os2_y_subscript_y_offset : int;<br> os2_y_superscript_x_size : int;<br> os2_y_superscript_y_size : int;<br> os2_y_superscript_x_offset : int;<br> os2_y_superscript_y_offset : int;<br> os2_y_strikeout_size : int;<br> os2_y_strikeout_position : int;<br> os2_family_class : int;<br> os2_panose : string;<br> os2_ul_unicode_range1 : int32;<br> os2_ul_unicode_range2 : int32;<br> os2_ul_unicode_range3 : int32;<br> os2_ul_unicode_range4 : int32;<br> os2_ach_vend_id : int32;<br> os2_fs_selection : int;<br> os2_us_first_char_index : int;<br> os2_us_last_char_index : int;<br> os2_s_typo_ascender : int;<br> os2_s_type_descender : int;<br> os2_s_typo_linegap : int;<br> os2_us_win_ascent : int;<br> os2_us_win_descent : int;<br> os2_ul_code_page_range_1 : int32 option;<br> os2_ul_code_page_range_2 : int32 option;<br> os2_s_x_height : int option;<br> os2_s_cap_height : int option;<br> os2_us_default_char : int option;<br> os2_us_break_char : int option;<br> os2_us_max_context : int option;<br> }<br> <span class="keyword">val</span> os2 : <span class="constructor">Otfm</span>.decoder <span class="keywordsign">-></span> [> <span class="keywordsign">`</span><span class="constructor">Error</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.error <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ok</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.os2 ]<br> <span class="keyword">type</span> kern_info = {<br> kern_dir : [ <span class="keywordsign">`</span><span class="constructor">H</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">V</span> ];<br> kern_kind : [ <span class="keywordsign">`</span><span class="constructor">Kern</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Min</span> ];<br> kern_cross_stream : bool;<br> }<br> <span class="keyword">val</span> kern :<br> <span class="constructor">Otfm</span>.decoder <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="constructor">Otfm</span>.kern_info <span class="keywordsign">-></span> [ <span class="keywordsign">`</span><span class="constructor">Fold</span> <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Skip</span> ] * <span class="keywordsign">'</span>a) <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="constructor">Otfm</span>.glyph_id <span class="keywordsign">-></span> <span class="constructor">Otfm</span>.glyph_id <span class="keywordsign">-></span> int <span class="keywordsign">-></span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span><br> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> [> <span class="keywordsign">`</span><span class="constructor">Error</span> <span class="keyword">of</span> <span class="constructor">Otfm</span>.error <span class="keywordsign">|</span> <span class="keywordsign">`</span><span class="constructor">Ok</span> <span class="keyword">of</span> <span class="keywordsign">'</span>a ]<br> <span class="keyword">end</span></code></body></html>