OpenType.java revision 13629:5bb70b2df494
1187469Sed/*
2187469Sed * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
3187469Sed * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4187469Sed *
5187469Sed * This code is free software; you can redistribute it and/or modify it
6187469Sed * under the terms of the GNU General Public License version 2 only, as
7187469Sed * published by the Free Software Foundation.  Oracle designates this
8187469Sed * particular file as subject to the "Classpath" exception as provided
9187469Sed * by Oracle in the LICENSE file that accompanied this code.
10187469Sed *
11187469Sed * This code is distributed in the hope that it will be useful, but WITHOUT
12187469Sed * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13187469Sed * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14187469Sed * version 2 for more details (a copy is included in the LICENSE file that
15187469Sed * accompanied this code).
16187469Sed *
17187469Sed * You should have received a copy of the GNU General Public License version
18187469Sed * 2 along with this work; if not, write to the Free Software Foundation,
19187469Sed * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20187469Sed *
21187469Sed * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22187469Sed * or visit www.oracle.com if you need additional information or have any
23187469Sed * questions.
24187469Sed */
25187469Sed
26187469Sedpackage java.awt.font;
27187469Sed
28187469Sed/**
29187469Sed * The {@code OpenType} interface represents OpenType and
30187469Sed * TrueType fonts.  This interface makes it possible to obtain
31187469Sed * <i>sfnt</i> tables from the font.  A particular
32187469Sed * {@code Font} object can implement this interface.
33187469Sed * <p>
34187469Sed * For more information on TrueType and OpenType fonts, see the
35187469Sed * OpenType specification.
36187469Sed * ( <a href="http://www.microsoft.com/typography/otspec/">http://www.microsoft.com/typography/otspec/</a> ).
37187469Sed */
38187469Sedpublic interface OpenType {
39187469Sed
40187469Sed  /* 51 tag types so far */
41187469Sed
42187469Sed  /**
43187469Sed   * Character to glyph mapping.  Table tag "cmap" in the Open
44187469Sed   * Type Specification.
45187469Sed   */
46187469Sed  public static final int       TAG_CMAP        = 0x636d6170;
47187469Sed
48187469Sed  /**
49187469Sed   * Font header.  Table tag "head" in the Open
50187469Sed   * Type Specification.
51187469Sed   */
52187469Sed  public static final int       TAG_HEAD        = 0x68656164;
53187469Sed
54187469Sed  /**
55187469Sed   * Naming table.  Table tag "name" in the Open
56187469Sed   * Type Specification.
57187469Sed   */
58187469Sed  public static final int       TAG_NAME        = 0x6e616d65;
59187469Sed
60187469Sed  /**
61187469Sed   * Glyph data.  Table tag "glyf" in the Open
62187469Sed   * Type Specification.
63187469Sed   */
64187469Sed  public static final int       TAG_GLYF        = 0x676c7966;
65187469Sed
66187469Sed  /**
67187469Sed   * Maximum profile.  Table tag "maxp" in the Open
68187469Sed   * Type Specification.
69187469Sed   */
70187469Sed  public static final int       TAG_MAXP        = 0x6d617870;
71187469Sed
72187469Sed  /**
73187469Sed   * CVT preprogram.  Table tag "prep" in the Open
74187469Sed   * Type Specification.
75187469Sed   */
76187469Sed  public static final int       TAG_PREP        = 0x70726570;
77187469Sed
78187469Sed  /**
79187469Sed   * Horizontal metrics.  Table tag "hmtx" in the Open
80187469Sed   * Type Specification.
81187469Sed   */
82187469Sed  public static final int       TAG_HMTX        = 0x686d7478;
83187469Sed
84187469Sed  /**
85187469Sed   * Kerning.  Table tag "kern" in the Open
86187469Sed   * Type Specification.
87187469Sed   */
88187469Sed  public static final int       TAG_KERN        = 0x6b65726e;
89187469Sed
90187469Sed  /**
91187469Sed   * Horizontal device metrics.  Table tag "hdmx" in the Open
92187469Sed   * Type Specification.
93187469Sed   */
94187469Sed  public static final int       TAG_HDMX        = 0x68646d78;
95187469Sed
96187469Sed  /**
97187469Sed   * Index to location.  Table tag "loca" in the Open
98187469Sed   * 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   */
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   */
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   */
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   */
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   */
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   */
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   */
429  public int getFontTableSize(String strSfntTag);
430
431
432}
433