1472N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 0N/A * published by the Free Software Foundation. Oracle designates this 0N/A * particular file as subject to the "Classpath" exception as provided 0N/A * by Oracle in the LICENSE file that accompanied this code. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1472N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 0N/A * (C) Copyright IBM Corp. 1998-2010 - All Rights Reserved 0N/A * This class implements layout for the Thai script, using the ThaiShapingClass. 0N/A * All existing Thai fonts use an encoding which assigns character codes to all 0N/A * the variant forms needed to display accents and tone marks correctly in context. 0N/A * This class can deal with fonts using the Microsoft, Macintosh, and WorldType encodings. 0N/A * This constructs an instance of ThaiLayoutEngine for the given font, script and 0N/A * language. It examines the font, using LEFontInstance::canDisplay, to set fGlyphSet 0N/A * and fErrorChar. (see below) 0N/A * @param fontInstance - the font 0N/A * @param scriptCode - the script 0N/A * @param languageCode - the language 0N/A * @param success - set to an error code if the operation fails 0N/A * @see LEFontInstance 0N/A * The destructor, virtual for correct polymorphic invocation. 0N/A * ICU "poor man's RTTI", returns a UClassID for the actual class. 0N/A * ICU "poor man's RTTI", returns a UClassID for this class. 0N/A * A small integer indicating which Thai encoding 0N/A * The character used as a base for vowels and 0N/A * tone marks that are out of sequence. Usually 0N/A * this will be Unicode 0x25CC, if the font can 0N/A * This method performs Thai layout. It calls ThaiShaping::compose to 0N/A * generate the correct contextual character codes, and then calls 0N/A * mapCharsToGlyphs to generate the glyph indices. 0N/A * @param chars - the input character context 0N/A * @param offset - the index of the first character to process 0N/A * @param count - the number of characters to process 0N/A * @param max - the number of characters in the input context 0N/A * @param rightToLeft - <code>TRUE</code> if the text is in a right to left directional run 0N/A * @param glyphStorage - the glyph storage object. The glyph and char index arrays will be set. 0N/A * Output parameters: 0N/A * @param success - set to an error code if the operation fails 0N/A * @return the number of glyphs in the glyph index array 0N/A * This method does positioning adjustments like accent positioning and 0N/A * kerning. The default implementation does nothing. Subclasses needing 0N/A * position adjustments must override this method. 0N/A * Note that this method has both characters and glyphs as input so that 0N/A * it can use the character codes to determine glyph types if that information 0N/A * isn't directly available. (e.g. Some Arabic OpenType fonts don't have a GDEF 0N/A * @param chars - the input character context 0N/A * @param offset - the offset of the first character to process 0N/A * @param count - the number of characters to process 0N/A * @param reverse - <code>TRUE</code> if the glyphs in the glyph array have been reordered 0N/A * @param glyphStorage - the object which holds the per-glyph storage. The glyph positions will be 0N/A * adjusted as needed. 0N/A * @param success - output parameter set to an error code if the operation fails