Class: HexaPDF::Font::CMap::Parser
- Inherits:
-
Object
- Object
- HexaPDF::Font::CMap::Parser
- Defined in:
- lib/hexapdf/font/cmap/parser.rb
Overview
Parses CMap files.
Currently only ToUnicode CMaps are supported.
Instance Method Summary collapse
-
#parse(string) ⇒ Object
Parses the given string and returns a CMap object.
Instance Method Details
#parse(string) ⇒ Object
Parses the given string and returns a CMap object.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/hexapdf/font/cmap/parser.rb', line 48 def parse(string) tokenizer = HexaPDF::Content::Tokenizer.new(string) cmap = CMap.new while (token = tokenizer.next_token) != HexaPDF::Tokenizer::NO_MORE_TOKENS if token.kind_of?(HexaPDF::Tokenizer::Token) case token when 'beginbfchar'.freeze then parse_bf_char(tokenizer, cmap) when 'beginbfrange'.freeze then parse_bf_range(tokenizer, cmap) when 'endcmap' then break end elsif token.kind_of?(Symbol) parse_dict_mapping(tokenizer, cmap, token) end end cmap rescue => e raise HexaPDF::Error, "Error parsing CMap: #{e.}", e.backtrace end |