When the font has no Encoding entry, or the font descriptor’s Symbolic flag is set (in which case the Encoding entry is ignored), this shall occur: • If the font contains a (3, 0) subtable, the range of character codes shall be one of these: 0x0000 0x00FF, 0xF000 -0xF0FF, 0xF100 -0xF1FF, or 0xF200 -0xF2FF. Depending on the range of codes,each byte from the string shall be prepended with the high byte of the range, to form a two-bytecharacter, which shall be used to select the associated glyph description from the subtable. • Otherwise, if the font contains a (1, 0) subtable, single bytes from the string shall be used to lookup the associated glyph descriptions from the subtable.
Above description does not clarify if a symbol font with (3,0) subtable can have multiple character code ranges. say 0x0000 -> 0x00FF and 0xF000 -> 0xF0FF. Are multiple code ranges allowed ?
If yes, how would a font rendering application know which code range to choose ?
It says quite specifically "ONE OF THESE". Faced with anything else, a conforming implementation may do anything it wants or nothing at all. For this reason, use only fonts which follow the exact specification, with its most pedantic interpretation. It is no use looking at what Adobe software does as there are now countless different implementations in very wide use.