⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fontrecord.java

📁 java 报表 to office文档: 本包由java语言开发
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* ====================================================================   Copyright 2002-2004   Apache Software Foundation   Licensed under the Apache License, Version 2.0 (the "License");   you may not use this file except in compliance with the License.   You may obtain a copy of the License at       http://www.apache.org/licenses/LICENSE-2.0   Unless required by applicable law or agreed to in writing, software   distributed under the License is distributed on an "AS IS" BASIS,   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   See the License for the specific language governing permissions and   limitations under the License.==================================================================== */        package org.apache.poi.hssf.record;import org.apache.poi.util.LittleEndian;import org.apache.poi.util.StringUtil;import org.apache.poi.util.BitField;/** * Title:        Font Record - descrbes a font in the workbook (index = 0-3,5-infinity - skip 4)<P> * Description:  An element in the Font Table<P> * REFERENCE:  PG 315 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P> * @author Andrew C. Oliver (acoliver at apache dot org) * @version 2.0-pre */public class FontRecord    extends Record{    public final static short     sid                 =        0x31;                                                 // docs are wrong (0x231 Microsoft Support site article Q184647)    public final static short     SS_NONE             = 0;    public final static short     SS_SUPER            = 1;    public final static short     SS_SUB              = 2;    public final static byte      U_NONE              = 0;    public final static byte      U_SINGLE            = 1;    public final static byte      U_DOUBLE            = 2;    public final static byte      U_SINGLE_ACCOUNTING = 0x21;    public final static byte      U_DOUBLE_ACCOUNTING = 0x22;    private short                 field_1_font_height;        // in units of .05 of a point    private short                 field_2_attributes;    // 0 0x01 - Reserved bit must be 0    static final private BitField italic     =        new BitField(0x02);                                   // is this font in italics    // 2 0x04 - reserved bit must be 0    static final private BitField strikeout  =        new BitField(0x08);                                   // is this font has a line through the center    static final private BitField macoutline = new BitField(        0x10);                                                // some weird macintosh thing....but who understands those mac people anyhow    static final private BitField macshadow  = new BitField(        0x20);                                                // some weird macintosh thing....but who understands those mac people anyhow    // 7-6 - reserved bits must be 0    // the rest is unused    private short                 field_3_color_palette_index;    private short                 field_4_bold_weight;    private short                 field_5_super_sub_script;   // 00none/01super/02sub    private byte                  field_6_underline;          // 00none/01single/02double/21singleaccounting/22doubleaccounting    private byte                  field_7_family;             // ?? defined by windows api logfont structure?    private byte                  field_8_charset;            // ?? defined by windows api logfont structure?    private byte                  field_9_zero = 0;           // must be 0    private byte                  field_10_font_name_len;     // length of the font name    private String                field_11_font_name;         // whoa...the font name    public FontRecord()    {    }    /**     * Constructs a Font record and sets its fields appropriately.     *     * @param id     id must be 0x31 (NOT 0x231 see MSKB #Q184647 for an "explanation of     * this bug in the documentation) or an exception will be throw upon validation     * @param size  the size of the data area of the record     * @param data  data of the record (should not contain sid/len)     */    public FontRecord(short id, short size, byte [] data)    {        super(id, size, data);    }    /**     * Constructs a Font record and sets its fields appropriately.     *     * @param id     id must be 0x31 (NOT 0x231 see MSKB #Q184647 for an "explanation of     * this bug in the documentation) or an exception will be throw upon validation     * @param size  the size of the data area of the record     * @param data  data of the record (should not contain sid/len)     * @param offset of the record's data     */    public FontRecord(short id, short size, byte [] data, int offset)    {        super(id, size, data, offset);    }    protected void validateSid(short id)    {        if (id != sid)        {            throw new RecordFormatException("NOT A FONT RECORD");        }    }    protected void fillFields(byte [] data, short size, int offset)    {        field_1_font_height         = LittleEndian.getShort(data, 0 + offset);        field_2_attributes          = LittleEndian.getShort(data, 2 + offset);        field_3_color_palette_index = LittleEndian.getShort(data, 4 + offset);        field_4_bold_weight         = LittleEndian.getShort(data, 6 + offset);        field_5_super_sub_script    = LittleEndian.getShort(data, 8 + offset);        field_6_underline           = data[ 10 + offset ];        field_7_family              = data[ 11 + offset ];        field_8_charset             = data[ 12 + offset ];        field_9_zero                = data[ 13 + offset ];        field_10_font_name_len      = data[ 14 + offset ];        if (field_10_font_name_len > 0)        {            if (data[ 15 ] == 0)            {   // is compressed unicode                field_11_font_name = StringUtil.getFromCompressedUnicode(data, 16,                                                LittleEndian.ubyteToInt(field_10_font_name_len));            }            else            {   // is not compressed unicode                field_11_font_name = StringUtil.getFromUnicodeLE(data, 16,                        field_10_font_name_len);            }        }    }    /**     * sets the height of the font in 1/20th point units     *     * @param height  fontheight (in points/20)     */    public void setFontHeight(short height)    {        field_1_font_height = height;    }    /**     * set the font attributes (see individual bit setters that reference this method)     *     * @param attributes    the bitmask to set     */    public void setAttributes(short attributes)    {        field_2_attributes = attributes;    }    // attributes bitfields    /**     * set the font to be italics or not     *     * @param italics - whether the font is italics or not     * @see #setAttributes(short)     */    public void setItalic(boolean italics)    {        field_2_attributes = italic.setShortBoolean(field_2_attributes, italics);    }    /**     * set the font to be stricken out or not     *     * @param strike - whether the font is stricken out or not     * @see #setAttributes(short)     */    public void setStrikeout(boolean strike)    {        field_2_attributes = strikeout.setShortBoolean(field_2_attributes, strike);    }    /**     * whether to use the mac outline font style thing (mac only) - Some mac person     * should comment this instead of me doing it (since I have no idea)     *     * @param mac - whether to do that mac font outline thing or not     * @see #setAttributes(short)     */    public void setMacoutline(boolean mac)    {        field_2_attributes = macoutline.setShortBoolean(field_2_attributes, mac);    }    /**     * whether to use the mac shado font style thing (mac only) - Some mac person     * should comment this instead of me doing it (since I have no idea)     *     * @param mac - whether to do that mac font shadow thing or not     * @see #setAttributes(short)     */    public void setMacshadow(boolean mac)    {        field_2_attributes = macshadow.setShortBoolean(field_2_attributes, mac);    }    /**     * set the font's color palette index     *     * @param cpi - font color index     */    public void setColorPaletteIndex(short cpi)    {        field_3_color_palette_index = cpi;    }    /**     * set the bold weight for this font (100-1000dec or 0x64-0x3e8).  Default is     * 0x190 for normal and 0x2bc for bold     *     * @param bw - a number between 100-1000 for the fonts "boldness"     */    public void setBoldWeight(short bw)    {        field_4_bold_weight = bw;    }    /**     * set the type of super or subscript for the font     *     * @param sss  super or subscript option     * @see #SS_NONE     * @see #SS_SUPER     * @see #SS_SUB     */    public void setSuperSubScript(short sss)    {        field_5_super_sub_script = sss;    }    /**     * set the type of underlining for the font     *     * @param u  super or subscript option     *     * @see #U_NONE     * @see #U_SINGLE     * @see #U_DOUBLE     * @see #U_SINGLE_ACCOUNTING     * @see #U_DOUBLE_ACCOUNTING     */    public void setUnderline(byte u)    {        field_6_underline = u;    }    /**     * set the font family (TODO)     *     * @param f family     */    public void setFamily(byte f)    {        field_7_family = f;    }    /**

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -