当前位置: 首页 > news >正文

如何在k8s的Java服务镜像(Linux)中设置中文字体

问题描述:服务是基于springboot的Java服务,在项目上是通过Maven的谷歌插件打包,再由k8s部署的。k8s的镜像就是一个Java服务,Java服务用到了中文字体。
解决这个问题首先需要搞定镜像字体的问题。有很多类似的解决方案,解决的思路是ubuntu或者centos中改变某些配置去让系统能够支持中文字体。链接在这里
不过这种解决方式在服务器中能够生效,在k8s的镜像中就不生效了。原因在于修改某些配置后,需要重启生效,但是通过Google插件打包的java镜像本身就是一个进程,重启后原有的进程被杀死,原有的配置也没有了。再此提供两种解决方法。
1 修改原本的打包镜像:在原有镜像的基础上加上字体,然后把字体打包。使用的打包文件结构如下:
打包的基础文件
其中主文件夹为myimage,下面有两个文件:Dockerfile和字体Font字体文件新建了一个名为font的文件夹,文件夹下是下载好的中文字体,一般是在Windows系统的C:\Windows\Fonts路径下。我的font目录下存放了上述文件夹下的宋体。Dockerfile的内容如下:`
FROM xxxxxx/openjdk:oraclelinux7-tini

RUN yum -y install fontconfig
COPY ./fonts /usr/share/fonts
RUN yum -y install ttmkfdir && ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir && fc-cache`

使用Docker将上述的文件进行打包再推送到docker的镜像仓库,然后把上推镜像仓库重新取个名字,在Maven仓库重新引用新的镜像地址就可以了。如下图:
新的镜像引入方式
2 引入外部字体,即先将下好的字体放在某一个目录下,再根据这个字体使用Font类新建一个字体。实现如下:

import java.io.InputStream;
import java.awt.Font;private Font getFont(int style, int size) {// 字体在Linux镜像下的路径根据实际情况来。我的服务器在root/logs下面已有了宋体字体(simsun.ttc)String path = "/root/logs/simsun.ttc";InputStream imputstream= this.getClass().getResourceAsStream(path);Font font = null;try {font = Font.createFont(Font.TRUETYPE_FONT, imputstream);} catch (Exception e) {logger.error("新建字体异常", e);return null;}Font newFont = font.deriveFont(style, size);return newFont;}

后续在使用字体时即可调用此方法

http://www.lryc.cn/news/207631.html

相关文章:

  • CT 扫描的 3D 图像分类-预测肺炎的存在
  • 整合管理案例题分析
  • mysql4
  • Python深度学习实战-基于tensorflow原生代码搭建BP神经网络实现分类任务(附源码和实现效果)
  • PDF 文档处理:使用 Java 对比 PDF 找出内容差异
  • 压敏电阻有哪些原理?|深圳比创达电子EMC
  • 【计算机网络笔记】Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
  • IDEA 2023.2.2 使用 Scala 编译报错 No scalac found to compile scala sources
  • C51--PWN-舵机控制
  • electron27+react18集成搭建跨平台应用|electron窗口多开
  • 【k8s】kubeadm安装k8s集群
  • 三、虚拟机的迁移和删除
  • RabbitMQ的交换机(原理及代码实现)
  • 【C++进阶】pair容器
  • Linux--进程等待
  • VMware CentOS 虚拟机扩容
  • CentOS 编译安装 nginx
  • 学习笔记-MongoDB(命令增删改查,聚合,权限管理,索引,java使用)
  • 第13期 | GPTSecurity周报
  • OpenCV学习(一)——图像读取
  • 并发编程- 线程池ForkJoinPool工作原理分析(实践)
  • 小程序原生开发中的onLoad和onShow
  • springcloud技术栈以及相关组件
  • An Early Evaluation of GPT-4V(ision)
  • Vue在移动端实现图片的手指缩放
  • Failed to prepare the device for development
  • PPT文档图片设计素材资源下载站模板源码/织梦内核(带用户中心+VIP充值系统+安装教程)
  • 万能鼠标设置 SteerMouse v5.6.8
  • 16 用于NOMA IoT网络上行链路安全速率最大化的HAP和UAV协作框架
  • 【C++】STL容器——vector类的使用指南(含代码演示)(11)