1 /*
2  * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.  Oracle designates this
8  * particular file as subject to the "Classpath" exception as provided
9  * by Oracle in the LICENSE file that accompanied this code.
10  *
11  * This code is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14  * version 2 for more details (a copy is included in the LICENSE file that
15  * accompanied this code).
16  *
17  * You should have received a copy of the GNU General Public License version
18  * 2 along with this work; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22  * or visit www.oracle.com if you need additional information or have any
23  * questions.
24  */
25 
26 package java.awt.font;
27 
28 /**
29  * The {@code OpenType} interface represents OpenType and
30  * TrueType fonts.  This interface makes it possible to obtain
31  * <i>sfnt</i> tables from the font.  A particular
32  * {@code Font} object can implement this interface.
33  * <p>
34  * For more information on TrueType and OpenType fonts, see the
35  * OpenType specification.
36  * ( <a href="http://www.microsoft.com/typography/otspec/">http://www.microsoft.com/typography/otspec/</a> ).
37  */
38 public interface OpenType {
39 
40   /* 51 tag types so far */
41 
42   /**
43    * Character to glyph mapping.  Table tag "cmap" in the Open
44    * Type Specification.
45    */
46   public static final int       TAG_CMAP        = 0x636d6170;
47 
48   /**
49    * Font header.  Table tag "head" in the Open
50    * Type Specification.
51    */
52   public static final int       TAG_HEAD        = 0x68656164;
53 
54   /**
55    * Naming table.  Table tag "name" in the Open
56    * Type Specification.
57    */
58   public static final int       TAG_NAME        = 0x6e616d65;
59 
60   /**
61    * Glyph data.  Table tag "glyf" in the Open
62    * Type Specification.
63    */
64   public static final int       TAG_GLYF        = 0x676c7966;
65 
66   /**
67    * Maximum profile.  Table tag "maxp" in the Open
68    * Type Specification.
69    */
70   public static final int       TAG_MAXP        = 0x6d617870;
71 
72   /**
73    * CVT preprogram.  Table tag "prep" in the Open
74    * Type Specification.
75    */
76   public static final int       TAG_PREP        = 0x70726570;
77 
78   /**
79    * Horizontal metrics.  Table tag "hmtx" in the Open
80    * Type Specification.
81    */
82   public static final int       TAG_HMTX        = 0x686d7478;
83 
84   /**
85    * Kerning.  Table tag "kern" in the Open
86    * Type Specification.
87    */
88   public static final int       TAG_KERN        = 0x6b65726e;
89 
90   /**
91    * Horizontal device metrics.  Table tag "hdmx" in the Open
92    * Type Specification.
93    */
94   public static final int       TAG_HDMX        = 0x68646d78;
95 
96   /**
97    * Index to location.  Table tag "loca" in the Open
98    * Type Specification.
99    */
100   public static final int       TAG_LOCA        = 0x6c6f6361;
101 
102   /**
103    * PostScript Information.  Table tag "post" in the Open
104    * Type Specification.
105    */
106   public static final int       TAG_POST        = 0x706f7374;
107 
108   /**
109    * OS/2 and Windows specific metrics.  Table tag "OS/2"
110    * in the Open Type Specification.
111    */
112   public static final int       TAG_OS2 = 0x4f532f32;
113 
114   /**
115    * Control value table.  Table tag "cvt "
116    * in the Open Type Specification.
117    */
118   public static final int       TAG_CVT = 0x63767420;
119 
120   /**
121    * Grid-fitting and scan conversion procedure.  Table tag
122    * "gasp" in the Open Type Specification.
123    */
124   public static final int       TAG_GASP        = 0x67617370;
125 
126   /**
127    * Vertical device metrics.  Table tag "VDMX" in the Open
128    * Type Specification.
129    */
130   public static final int       TAG_VDMX        = 0x56444d58;
131 
132   /**
133    * Vertical metrics.  Table tag "vmtx" in the Open
134    * Type Specification.
135    */
136   public static final int       TAG_VMTX        = 0x766d7478;
137 
138   /**
139    * Vertical metrics header.  Table tag "vhea" in the Open
140    * Type Specification.
141    */
142   public static final int       TAG_VHEA        = 0x76686561;
143 
144   /**
145    * Horizontal metrics header.  Table tag "hhea" in the Open
146    * Type Specification.
147    */
148   public static final int       TAG_HHEA        = 0x68686561;
149 
150   /**
151    * Adobe Type 1 font data.  Table tag "typ1" in the Open
152    * Type Specification.
153    */
154   public static final int       TAG_TYP1        = 0x74797031;
155 
156   /**
157    * Baseline table.  Table tag "bsln" in the Open
158    * Type Specification.
159    */
160   public static final int       TAG_BSLN        = 0x62736c6e;
161 
162   /**
163    * Glyph substitution.  Table tag "GSUB" in the Open
164    * Type Specification.
165    */
166   public static final int       TAG_GSUB        = 0x47535542;
167 
168   /**
169    * Digital signature.  Table tag "DSIG" in the Open
170    * Type Specification.
171    */
172   public static final int       TAG_DSIG        = 0x44534947;
173 
174   /**
175    * Font program.   Table tag "fpgm" in the Open
176    * Type Specification.
177    */
178   public static final int       TAG_FPGM        = 0x6670676d;
179 
180   /**
181    * Font variation.   Table tag "fvar" in the Open
182    * Type Specification.
183    */
184   public static final int       TAG_FVAR        = 0x66766172;
185 
186   /**
187    * Glyph variation.  Table tag "gvar" in the Open
188    * Type Specification.
189    */
190   public static final int       TAG_GVAR        = 0x67766172;
191 
192   /**
193    * Compact font format (Type1 font).  Table tag
194    * "CFF " in the Open Type Specification.
195    */
196   public static final int       TAG_CFF = 0x43464620;
197 
198   /**
199    * Multiple master supplementary data.  Table tag
200    * "MMSD" in the Open Type Specification.
201    */
202   public static final int       TAG_MMSD        = 0x4d4d5344;
203 
204   /**
205    * Multiple master font metrics.  Table tag
206    * "MMFX" in the Open Type Specification.
207    */
208   public static final int       TAG_MMFX        = 0x4d4d4658;
209 
210   /**
211    * Baseline data.  Table tag "BASE" in the Open
212    * Type Specification.
213    */
214   public static final int       TAG_BASE        = 0x42415345;
215 
216   /**
217    * Glyph definition.  Table tag "GDEF" in the Open
218    * Type Specification.
219    */
220   public static final int       TAG_GDEF        = 0x47444546;
221 
222   /**
223    * Glyph positioning.  Table tag "GPOS" in the Open
224    * Type Specification.
225    */
226   public static final int       TAG_GPOS        = 0x47504f53;
227 
228   /**
229    * Justification.  Table tag "JSTF" in the Open
230    * Type Specification.
231    */
232   public static final int       TAG_JSTF        = 0x4a535446;
233 
234   /**
235    * Embedded bitmap data.  Table tag "EBDT" in the Open
236    * Type Specification.
237    */
238   public static final int       TAG_EBDT        = 0x45424454;
239 
240   /**
241    * Embedded bitmap location.  Table tag "EBLC" in the Open
242    * Type Specification.
243    */
244   public static final int       TAG_EBLC        = 0x45424c43;
245 
246   /**
247    * Embedded bitmap scaling.  Table tag "EBSC" in the Open
248    * Type Specification.
249    */
250   public static final int       TAG_EBSC        = 0x45425343;
251 
252   /**
253    * Linear threshold.  Table tag "LTSH" in the Open
254    * Type Specification.
255    */
256   public static final int       TAG_LTSH        = 0x4c545348;
257 
258   /**
259    * PCL 5 data.  Table tag "PCLT" in the Open
260    * Type Specification.
261    */
262   public static final int       TAG_PCLT        = 0x50434c54;
263 
264   /**
265    * Accent attachment.  Table tag "acnt" in the Open
266    * Type Specification.
267    */
268   public static final int       TAG_ACNT        = 0x61636e74;
269 
270   /**
271    * Axis variation.  Table tag "avar" in the Open
272    * Type Specification.
273    */
274   public static final int       TAG_AVAR        = 0x61766172;
275 
276   /**
277    * Bitmap data.  Table tag "bdat" in the Open
278    * Type Specification.
279    */
280   public static final int       TAG_BDAT        = 0x62646174;
281 
282   /**
283    * Bitmap location.  Table tag "bloc" in the Open
284    * Type Specification.
285    */
286   public static final int       TAG_BLOC        = 0x626c6f63;
287 
288    /**
289     * CVT variation.  Table tag "cvar" in the Open
290     * Type Specification.
291     */
292   public static final int       TAG_CVAR        = 0x63766172;
293 
294   /**
295    * Feature name.  Table tag "feat" in the Open
296     * Type Specification.
297    */
298   public static final int       TAG_FEAT        = 0x66656174;
299 
300   /**
301    * Font descriptors.  Table tag "fdsc" in the Open
302    * Type Specification.
303    */
304   public static final int       TAG_FDSC        = 0x66647363;
305 
306   /**
307    * Font metrics.  Table tag "fmtx" in the Open
308    * Type Specification.
309    */
310   public static final int       TAG_FMTX        = 0x666d7478;
311 
312   /**
313    * Justification.  Table tag "just" in the Open
314    * Type Specification.
315    */
316   public static final int       TAG_JUST        = 0x6a757374;
317 
318   /**
319    * Ligature caret.   Table tag "lcar" in the Open
320    * Type Specification.
321    */
322   public static final int       TAG_LCAR        = 0x6c636172;
323 
324   /**
325    * Glyph metamorphosis.  Table tag "mort" in the Open
326    * Type Specification.
327    */
328   public static final int       TAG_MORT        = 0x6d6f7274;
329 
330   /**
331    * Optical bounds.  Table tag "opbd" in the Open
332    * Type Specification.
333    */
334   public static final int       TAG_OPBD        = 0x6F706264;
335 
336   /**
337    * Glyph properties.  Table tag "prop" in the Open
338    * Type Specification.
339    */
340   public static final int       TAG_PROP        = 0x70726f70;
341 
342   /**
343    * Tracking.  Table tag "trak" in the Open
344    * Type Specification.
345    */
346   public static final int       TAG_TRAK        = 0x7472616b;
347 
348   /**
349    * Returns the version of the {@code OpenType} font.
350    * 1.0 is represented as 0x00010000.
351    * @return the version of the {@code OpenType} font.
352    */
getVersion()353   public int getVersion();
354 
355   /**
356    * Returns the table as an array of bytes for a specified tag.
357    * Tags for sfnt tables include items like <i>cmap</i>,
358    * <i>name</i> and <i>head</i>.  The {@code byte} array
359    * returned is a copy of the font data in memory.
360    * @param     sfntTag a four-character code as a 32-bit integer
361    * @return a {@code byte} array that is the table that
362    * contains the font data corresponding to the specified
363    * tag.
364    */
getFontTable(int sfntTag)365   public byte[] getFontTable(int sfntTag);
366 
367   /**
368    * Returns the table as an array of bytes for a specified tag.
369    * Tags for sfnt tables include items like <i>cmap</i>,
370    * <i>name</i> and <i>head</i>.  The byte array returned is a
371    * copy of the font data in memory.
372    * @param     strSfntTag a four-character code as a
373    *            {@code String}
374    * @return a {@code byte} array that is the table that
375    * contains the font data corresponding to the specified
376    * tag.
377    */
getFontTable(String strSfntTag)378   public byte[] getFontTable(String strSfntTag);
379 
380   /**
381    * Returns a subset of the table as an array of bytes
382    * for a specified tag.  Tags for sfnt tables include
383    * items like <i>cmap</i>, <i>name</i> and <i>head</i>.
384    * The byte array returned is a copy of the font data in
385    * memory.
386    * @param     sfntTag a four-character code as a 32-bit integer
387    * @param     offset index of first byte to return from table
388    * @param     count number of bytes to return from table
389    * @return a subset of the table corresponding to
390    *            {@code sfntTag} and containing the bytes
391    *            starting at {@code offset} byte and including
392    *            {@code count} bytes.
393    */
getFontTable(int sfntTag, int offset, int count)394   public byte[] getFontTable(int sfntTag, int offset, int count);
395 
396   /**
397    * Returns a subset of the table as an array of bytes
398    * for a specified tag.  Tags for sfnt tables include items
399    * like <i>cmap</i>, <i>name</i> and <i>head</i>. The
400    * {@code byte} array returned is a copy of the font
401    * data in memory.
402    * @param     strSfntTag a four-character code as a
403    * {@code String}
404    * @param     offset index of first byte to return from table
405    * @param     count  number of bytes to return from table
406    * @return a subset of the table corresponding to
407    *            {@code strSfntTag} and containing the bytes
408    *            starting at {@code offset} byte and including
409    *            {@code count} bytes.
410    */
getFontTable(String strSfntTag, int offset, int count)411   public byte[] getFontTable(String strSfntTag, int offset, int count);
412 
413   /**
414    * Returns the size of the table for a specified tag. Tags for sfnt
415    * tables include items like <i>cmap</i>, <i>name</i> and <i>head</i>.
416    * @param     sfntTag a four-character code as a 32-bit integer
417    * @return the size of the table corresponding to the specified
418    * tag.
419    */
getFontTableSize(int sfntTag)420   public int getFontTableSize(int sfntTag);
421 
422   /**
423    * Returns the size of the table for a specified tag. Tags for sfnt
424    * tables include items like <i>cmap</i>, <i>name</i> and <i>head</i>.
425    * @param     strSfntTag a four-character code as a
426    * {@code String}
427    * @return the size of the table corresponding to the specified tag.
428    */
getFontTableSize(String strSfntTag)429   public int getFontTableSize(String strSfntTag);
430 
431 
432 }
433