Java--工具类(Font字体)

package com.emdata.meteorology.cloudshape.common.utils;

import java.awt.*;
import java.io.*;

/**
 * @Desc FontUtil
 * @Author lihongjiang
 * @Date 2020/10/26 15:22
 **/
public class FontUtil {

    private static Font definedFont = null;

    public static Font getDefinedFont(InputStream is, float fs) {
        if (null==definedFont) {
            BufferedInputStream bis = null;
            try {
                bis = new BufferedInputStream(is);
                definedFont = Font.createFont(Font.TRUETYPE_FONT, is);
                // 设置字体大小,float型
                definedFont = definedFont.deriveFont(fs);
            } catch (IOException | FontFormatException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (null!=bis) {
                        bis.close();
                    }
                    if (null!=is) {
                        is.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return definedFont;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这是我的一个开源软件,开源地址 https://gitee.com/891062079/FontMaster,欢迎拍砖~~~ 1、字体设置 FontType 字体类型设置,可以选择系统字体或者其他字体,在选择系统字体的时候,可以通过Font属性选择字体名称,在选择其他字体的时候,可以通过Font属性选择ttf字库文件的路径。 Font 字体名称或者字体路径设置。 Size 字体大小设置,一般情况下,字体大小和字体高度是相同的。 Blod 字体粗体选择。 Italic 字体斜体选择。 CharCode 字符编码选择,影响字符集的大小,也影响生成字库的编码顺序。可以选择MBCS多字节编码方式,此方式一般为计算机本地化后的内码,或者选择Unicode编码方式,此方式编码的区间更大,可以兼容更多的字符集。 2、取模设置 Rotate 取模顺时针旋转角度,可以选择0,90,180,270度。注意这个设置不影响生成字库的字模宽度!生成字库的字模宽度始终为未旋转之前的宽度。 FlipX 取模X方向镜像。 FlipY 取模Y方向镜像。 Padding 分别设置在取模上下左右额外扩充的空白数。 3、编码设置 SourceType 选择编码的设置方式,可以选择分段编码或者索引表的方式。通过Source设置具体的分段或者索引表 Source 打开编码内容设置对话框,设置编码内容。在分段编码时,设置分段编码的范围,以“,”分隔,如 “0x0020-0x007F,0xB0:A1-0xF7:FE”。在索引表方式时,直接输入需要编码的字符串即可,如“测试编码”。在输入完成后,可以使用排序查重对输入内容进行检查。 BitsFirst 设置字节内编码顺序是MSBFirst或者LSBFist。 BitsPolariry 设置字节内编码的位极性,可以为高有效或低有效 Round 设置编码的回转方式,可以设置为在一行编码完成后回转到下一行编码或者在编码完成一个字节后,就回转到下一行编码,最后一行编码完成后,再次回到第一行编码,如此往复。 ScanX 水平扫描方式,可以选择“从左到右”或者“从右到左”。 ScanY 垂直扫描方式,可以选择“从上到下”或者从下到上”。 ScanXY 设置扫描先后顺序,可以选择“先水平后垂直”或者“先垂直后水平”。 4、数据结构 typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned long uint32_t; typedef struct tagFlHeader { uint8_t magic[4]; /* 'U'('S', 'M'), 'F', 'L', X---Unicode(Simple or MBCS), X: Version */ uint32_t dwFileSize; /* File total size */ uint16_t nSection; /* total sections */ uint16_t YSize; /* height of font */ uint16_t wCpFlag; /* codepageflag 每个bit位表示一个字符集。即最多可表示16个字符集。*/ uint16_t nTotalChars; /* 总的有效字符数 */ uint8_t reserved[2]; /* reserved[0], 'U'--Unicode, 'M'--MBCS */ } FL_Header; typedef struct tagFlSectionInfo { uint16_t First; /* first character */ uint16_t Last; /* last character */ uint32_t OffAddr; /* 指向的是当前SECTION包含的 FL_CHAR_INFO第一个字符信息的起始地址 */ } FL_SectionInfo; typedef struct tagFlCharIndex { uint16_t Width; /* 字符点阵的像素的宽度 */ uint32_t OffAddr; /* 当前字符点阵数据的起始地址 */ } FL_CharIndex;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你默然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值