Collabora CODE 增加字体

8 9 月

Collabora CODE 的 Docker镜像安装并启动后,默认中文字体只带了Note Sans SC,而且,很多汉字默认会fallback到日文字体,安装一系列常用字体非常有必要,为保证部署方便,写了个Dockerfile生成自己的镜像。

1、下载官方镜像中的启动脚本

从 https://github.com/CollaboraOnline/Docker-CODE/blob/master/scripts/start-libreoffice.sh 下载启动脚本,放到scripts目录中

2、准备需要添加的字体

将需要添加的字体放到windows目录中

3、编写Dockerfile文件

FROM centos:7

# 这里改成你自己的域名,可改可不改
ENV domain office.actom.me

#添加CODE的yum源
RUN rpm --import https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-centos7/repodata/repomd.xml.key
RUN yum-config-manager --add-repo https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-centos7

RUN yum update -y

#centos默认镜像中的glibc是精简过的,需要重新安装
RUN yum reinstall glibc glibc-common -y
#安装CODE
RUN yum install loolwsd CODE-brand -y
#安装启动脚本依赖的库
RUN yum install -y openssl perl 
#安装文泉译字体
RUN yum install -y wqy-*

#添加字体到系统指定目录
ADD windows /usr/share/fonts/windows
#重建字体缓存
RUN fc-cache -fv

#重点!/opt/lool/systemplate目录下需要将字体相关的几个文件夹重新用镜像中的对应文件夹覆盖,否则字体列表会有这个字体,但是实际上不生效
RUN rm -rf /opt/lool/systemplate/var/cache/fontconfig/*
RUN cp /var/cache/fontconfig/* /opt/lool/systemplate/var/cache/fontconfig
RUN ln -s /usr/share/fonts/* /opt/lool/systemplate/usr/share/fonts
RUN rm -rf /opt/lool/systemplate/etc/fonts
RUN cp -R /etc/fonts/ /opt/lool/systemplate/etc/fonts

# 设置环境变量为中文环境
RUN localedef -c -i zh_CN -f UTF-8 zh_CN.UTF-8
ENV LC_CTYPE zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
ENV LANG zh_CN.UTF-8
ADD scripts/start-libreoffice.sh /

# Entry point
CMD /bin/bash /start-libreoffice.sh

4、生成Docker镜像并运行

docker build -t actom/code:1.0 .
docker run --name office -t -d -p 127.0.0.1:9980:9980 -e 'domain=cloud\\.actom\\.me' --restart always --cap-add MKNOD actom/code:1.0

 

2 Replies to “Collabora CODE 增加字体

  1. 不用这么麻烦了,根据https://raw.githubusercontent.com/LibreOffice/online/master/docker/Dockerfile 文件的内容来看。
    安装字体后,直接执行loolwsd-systemplate-setup /opt/lool/systemplate /opt/libreoffice就好

  2. 您好:我是這用您的步驟執行到
    RUN ln -s /usr/share/fonts/* /opt/lool/systemplate/usr/share/fonts
    這條指令會有以下錯誤發生
    ln: failed to create symbolic link ‘/opt/lool/systemplate/usr/share/fonts/stix’: File exists
    請問該怎麼處理?
    謝謝!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注