word文档的内部实现原理是什么?

news/2024/11/7 7:53:21/

在了解word文档的原理之前,先了解记事本原理。

记事本原理

        记事本原理:文件以二进制数据在文件中储存,前几位为编码机制,标识记事本采用了哪一种字符集,后面按照固定位数读取。任何文件的开头都先指定编码,再根据编码存它们的二进制,存进硬盘。

        输入:输入法输入的时候输的就是编码,每一个拼音对应很多编码,然后编码在形状库对比,显示出不同的字符供选择,我们选择后在记事本中存的就是编码。

        读取:读取时,先读头部的编码确定是哪种编码,根据编码类型决定每次读几位,每种编码都有各自的形状库,选择形状库,再根据编码类型决定每次读几位,然后和他们的形状库对比,将数据从内存传到显示器,显示器显示出字符。

        记事本打开的时候就有一个默认编码,另存的时候就是编码之间做置换另存在硬盘中。

Word的实现原理

        Word的实现原理其实和记事本非常类似,只不过他们加了非常多的辅助技能以及加装了字体库,这样一来文本信息不止步于基础的编码,每一种基础的语言编码不再有单调的形状,而是具有了很多的扩展形状,Word可以对我们键入的编码进行修饰,进而改造成字体库中字体编码可以识别的编码,进而使用字体库中的其他字体的编码进行解码,这样一来就可以解码出更加有趣的形状,如同样的汉字,就可以有宋体楷体以及微软雅黑等不同的形状。

        Word采用了矢量计算的方式解决这个问题,也就是说直接对点阵信息进行函数计算,让它表现出各种样式,而不是真的为其设计一款自己的点阵信息,也就是说某个字可能只有一个点阵形状,它对应的其他形状的编码并没有自己的点阵信息来对应,有的只是一个矢量计算函数,这个函数可以让这个点阵信息在不失真的情况下发生各种颜色变化以及形变,进而进一步节省了空间。


http://www.ppmy.cn/news/1059965.html

相关文章

《存储IO路径》专题:DDIO对系统性能的影响

DDIO对系统性的影响 想象一下,有一天,你在网上冲浪,突然,一个巨大的数据包从天而降,直接砸在了你的电脑上。你一看,哇,是全新的《英雄联盟》版本!你迫不及待地打开了游戏,发现加载速度简直快如闪电。 那么,这个神奇的事情是怎么发生的呢? 其实,这都要归功于DDIO技…

基于javaweb的新生报到系统

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&…

python3高级编程

文章目录 1. Python网络编程1.1 服务器端代码(Server)1.2 客户端代码(Client) 2. 多线程2.1 线程模块2.2 使用 threading 模块创建线程2.3 线程同步2.4 线程优先级队列( Queue) 3. 日期和时间4. SMTP发送邮件4.1 使用Python发送HTML格式的邮件4.2 Python…

JAVA笔试基础知识-final/static+abstract/interface+wait/sleep+tcp/udp

1、final关键字和static关键字的区别 /*** final修饰类:* 使用final修饰类的目的简单明确,表明这个类不能被继承。* 当程序中有永远不会被继承的类时,可以使用final关键字修饰。* 被final修饰的类所有成员方法都将被隐式修饰为final方法。**…

db-gpt安装指南(docker版本)

1 下载源码 下载v0.3.5的源码,截止今天(20230823)建议安装这个“稳定”版本。 2 构建镜像 依照自己硬件环境,看看是否要调整一下启动参数。 bash docker/build_all_images.sh \ --base-image nvidia/cuda:11.7.1-devel-ubuntu…

FastJson在Java后端方面解析使用(二)

​ JSON现在常用来做前后端数据交互,两个蝴蝶飞只是简单的对JSON做一下讲解和简单使用。关于JSON,我还了解的远远不够。由于本人经验有限,嘴皮子不溜,所以学术性,概念性,底层性的知识点暂时不做介绍。文章中有错误之处…

GOLANG面向对象:封装 继承 多态

面向过程转换到面向对象,那么必然会涉及到几个特性:封装,继承,多态,那么Golang中的面向过程会有什么特性?那我们来仔细说一说: 封装: 首先要一个类的概念,类就像一下工厂…

一文读懂Redis配置,史上真香配置

文章目录 基本配置项AOF持久化配置项RDB持久化配置项淘汰策略配置项主从复制配置项鸣谢 让那些总为redis连接异常的小白指引明灯,少走弯路。为那些不知道如何进行高级配置的大佬整一杯小酒。 基本配置项 bind:用于设置Redis绑定的IP地址。默认情况下&…