Access.get expects the keyword to be an atom, got: "latn"
*Created by: Hermanverschooten* I am trying to use your arabic branch of gutenex, with a verdana.tff file, this blows up with following error: ``` 3:29:36.551 [debug] OS/2 ver 1 found ** (EXIT from #PID<0.156.0>) evaluator process exited with reason: an exception was raised: ** (ArgumentError) the Access calls for keywords expect the key to be an atom, got: "latn" (elixir) lib/access.ex:329: Access.get/3 lib/opentype.ex:245: OpenType.getFeatures/3 lib/opentype.ex:161: OpenType.handle_substitutions/6 lib/opentype.ex:127: OpenType.layout_text/5 lib/opentype/font.ex:50: OpenType.Font.handle_call/3 (stdlib) gen_server.erl:636: :gen_server.try_handle_call/4 (stdlib) gen_server.erl:665: :gen_server.handle_msg/6 (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3 Interactive Elixir (1.5.0) - press Ctrl+C to exit (type h() ENTER for help) iex(1)> 13:29:36.581 [error] GenServer #PID<0.159.0> terminating ** (ArgumentError) the Access calls for keywords expect the key to be an atom, got: "latn" (elixir) lib/access.ex:329: Access.get/3 lib/opentype.ex:245: OpenType.getFeatures/3 lib/opentype.ex:161: OpenType.handle_substitutions/6 lib/opentype.ex:127: OpenType.layout_text/5 lib/opentype/font.ex:50: OpenType.Font.handle_call/3 (stdlib) gen_server.erl:636: :gen_server.try_handle_call/4 (stdlib) gen_server.erl:665: :gen_server.handle_msg/6 (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3 Last message (from #PID<0.158.0>): {:layout, "ABC€", ["ccmp", "locl", "mark", "mkmk", "mset", "clig", "liga", "rlig", "calt", "rclt", "kern", "curs", "isol", "fina", "medi", "init"]} State: %{:ascent => 1566, :bbox => [-102, -423, 2963, 2049], :capHeight => 1433.6, :cid2gid => %{8243 => 316, 417 => 583, 263 => 252, 105 => 76, 7912 => 872, 313 => 269, 8364 => 188, 7872 => 637, 7919 => 879, 1070 => 518, 296 => 346, 947 => 452, 1116 => 563, 960 => 570, 48 => 19, 1103 => 551, 230 => 160, 1063 => 511, 1086 => 534, 8363 => 890, 941 => 447, 921 => 429, 343 => 370, 7898 => 858, 270 => 262, 344 => 283, 62 => 33, 1060 => 508, 205 => 203, 61445 => 412, 962 => 464, 333 => 366, 7867 => 632, 1092 => 540, 913 => 423, 232 => 113, 39 => 10, 164 => 892, 236 => 117, 934 => 301, 8706 => 152, 973 => 472, 7907 => 867, 61448 => 573, 7921 => 881, 217 => 212, ...}, :defaultWidth => 2048, :definitions => nil, :descent => -423, :embed => <<0, 1, 0, 0, 0, 20, 1, 0, 0, 4, 0, 64, 68, 83, 73, 71, 204, 60, 76, 106, 0, 2, 133, 180, 0, 0, 25, 92, 76, 84, 83, 72, 86, 148, 216, 47, 0, 0, 21, 72, 0, 0, ...>>, :familyClass => 2048, :flags => 4, :gid2cid => %{462 => 959, 417 => 905, 513 => 1065, 263 => 271, 525 => 1077, 475 => 1026, 500 => 1052, 105 => 225, 878 => 7918, 313 => 307, 296 => 378, 484 => 1035, 888 => 7928, 48 => 77, 635 => 7870, 230 => 166, 529 => 1081, 626 => 7861, 387 => 383, 343 => 293, 429 => 921, 270 => 314, 344 => 294, 62 => 91, 205 => 207, 646 => 7881, 333 => 277, 647 => 7882, 11 => 40, 232 => 240, 39 => 68, 164 => 172, 851 => 7891, 236 => 254, 560 => 1113, 217 => 728, 83 => 112, 265 => 280, 850 => 7890, ...}, :glyphWidths => [2048, 0, 720, 720, 806, 940, 1676, 1302, 2204, 1488, 550, 930, 930, 1302, 1676, 745, 930, 745, 930, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 930, 930, 1676, 1676, 1676, 1117, 2048, 1400, 1404, ...], :isCFF => false, :italicAngle => 0.0, :name => "Verdana", :positions => {[], [], []}, :stemV => 87, :substitutions => {[], [], []}, :tables => [%OpenType.Parser.FontTable{checksum: 3426503786, length: 6492, name: "DSIG", offset: 165300}, %OpenType.Parser.FontTable{checksum: 1452595247, length: 897, name: "LTSH", offset: 5448}, %OpenType.Parser.FontTable{checksum: 1198887107, length: 86, name: "OS/2", offset: 456}, %OpenType.Parser.FontTable{checksum: 1961983085, length: 1504, name: "VDMX", offset: 6348}, %OpenType.Parser.FontTable{checksum: 3897396107, length: 1676, name: "cmap", offset: 1984}, %OpenType.Parser.FontTable{checksum: 1285701890, length: 408, name: "cvt ", offset: 9096}, %OpenType.Parser.FontTable{checksum: 872586578, length: 2250, name: "edt0", offset: 163048}, %OpenType.Parser.FontTable{checksum: 928108841, length: 502, name: "fpgm", offset: 8592}, %OpenType.Parser.FontTable{checksum: 1507337, length: 16, name: "gasp", offset: 544}, %OpenType.Parser.FontTable{checksum: 621558534, length: 109162, name: "glyf", offset: 40860}, %OpenType.Parser.FontTable{checksum: 155782861, length: 27784, name: "hdmx", offset: 13076}, %OpenType.Parser.FontTable{checksum: 3437861277, length: 54, name: "head", offset: 332}, %OpenType.Parser.FontTable{checksum: 322636240, length: 36, name: "hhea", offset: 388}, %OpenType.Parser.FontTable{checksum: 3372577342, length: 3572, name: "hmtx", offset: 9504}, %OpenType.Parser.FontTable{checksum: 1975483987, length: 3222, name: "kern", offset: 159824}, %OpenType.Parser.FontTable{checksum: 2993887788, length: 1788, name: "loca", offset: 3660}, %OpenType.Parser.FontTable{checksum: 100140002, length: 32, name: "maxp", offset: 424}, %OpenType.Parser.FontTable{checksum: 693541188, length: 1424, name: "name", offset: 560}, %OpenType.Parser.FontTable{checksum: 3519442352, length: 9800, name: "post", offset: 150024}, %OpenType.Parser.FontTable{checksum: 2036717823, length: 739, name: "prep", offset: 7852}], :unitsPerEm => 2048, :usWeightClass => 400, :version => 65536, "SubType" => {:name, "Type0"}} Client #PID<0.158.0> is alive (stdlib) gen.erl:169: :gen.do_call/4 (elixir) lib/gen_server.ex:771: GenServer.call/3 (gutenex) lib/gutenex.ex:332: Gutenex.handle_cast/2 (stdlib) gen_server.erl:616: :gen_server.try_dispatch/4 (stdlib) gen_server.erl:686: :gen_server.handle_msg/6 (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3 ``` This is the code: ``` defmodule PdfTest do alias OpenType.Font @moduledoc """ Documentation for PdfTest. """ def hello do {:ok, pid} = Gutenex.start_link #Gutenex.add_image(pid, alpaca_alias, alpaca_rendition) {:ok, ssp} = Font.start_link Font.parse(ssp, "./fonts/Verdana.ttf") Gutenex.register_font(pid, "Verdana", ssp) |> Gutenex.begin_text |> Gutenex.set_font("Verdana", 48) |> Gutenex.text_position(40, 180) |> Gutenex.text_render_mode(:fill) |> Gutenex.write_text("ABC€") |> Gutenex.set_font("Courier", 32) |> Gutenex.text_render_mode(:stroke) |> Gutenex.write_text("xyz") |> Gutenex.end_text |> Gutenex.move_to(400, 20) # |> Gutenex.draw_image(alpaca_alias, %{ # translate_x: 300, # translate_y: 500, # }) |> Gutenex.export("./tmp/alpaca.pdf") |> Gutenex.stop end end ```
issue