CN108021567B - 浏览器自适应自定义字体的方法及装置 - Google Patents
浏览器自适应自定义字体的方法及装置 Download PDFInfo
- Publication number
- CN108021567B CN108021567B CN201610942692.0A CN201610942692A CN108021567B CN 108021567 B CN108021567 B CN 108021567B CN 201610942692 A CN201610942692 A CN 201610942692A CN 108021567 B CN108021567 B CN 108021567B
- Authority
- CN
- China
- Prior art keywords
- font
- name
- class
- file
- default
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9577—Optimising the visualization of content, e.g. distillation of HTML documents
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Controls And Circuits For Display Device (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种浏览器自适应自定义字体的方法及装置,属于计算机技术领域。浏览器初始化时,通过反射的方式获取系统当前正在使用的自定义字体的字体文件流,利用字体文件流构建字体类,将字体文件流的字体名称放在字体名称队列的头部位置;浏览器在加载网页时,根据自定义字体的字体名称所在的位置,优先利用自定义字体的字体类显示该网页中的字符。本发明解决了相关技术中浏览器在获取自定义字体文件的路径时存在兼容性的问题;可以有效地避免兼容性问题,在不同厂商提供的设备中均能够实现浏览器对自定义字体的自适应。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种浏览器自适应自定义字体的方法及装置。
背景技术
不同的用户对设备中字体的需求不同,用户可以根据自己的爱好修改设备是系统所使用的字体。在设备的系统字体被修改后,浏览器为了适应修改后的自定义字体,需要在开启后,初始化浏览器内核的字体类库。其中,字体类库用于存储在渲染显示网页字符时需要的字体类。
在初始化字体类库时,浏览器根据各个设备厂商预先设定的自定义字体的字体文件的路径,确定出当前设备的自定义字体的字体文件的路径,根据自定义字体的字体文件的路径获取自定义字体的字体文件,通过加载自定义字体的字体文件达到显示自定义字体的目的。
由于不同的厂商的自定义字体的字体文件的路径可能不同,导致浏览器在获取自定义字体的字体文件的路径时存在兼容性的问题,需要适配各个厂商的自定义字体的字体文件的路径;另外,由于自定义字体的字体文件的路径可能随时被修改,在自定义字体的字体文件的路径被修改后,浏览器之前根据自定义字体的字体文件的路径无法被继续使用。
发明内容
为了解决相关技术中浏览器在获取自定义字体文件的路径时存在兼容性的问题,本发明实施例提供了一种浏览器自适应自定义字体的方法及装置。所述技术方案如下:
第一方面,提供了一种浏览器自适应自定义字体的方法,所述方法包括:
在对浏览器内核中的字体类库进行初始化时,通过反射的方式获取系统当前正在使用的自定义字体的字体文件流;
为所述自定义字体构建字体名称,将所述自定义字体的字体名称存储至构建的字体名称队列的头部位置;
根据反射的方式获取所述自定义字体的字体文件流;
根据所述字体文件流构建所述自定义字体的字体类,将所述自定义字体的字体类以所述字体名称为索引存储至所述字体类库中。
第二方面,提供了一种浏览器自适应自定义字体的装置,所述装置包括:
反射获取模块,用于在对浏览器内核中的字体类库进行初始化时,通过反射的方式获取系统当前正在使用的自定义字体的字体文件流;
第一存储模块,用于为所述自定义字体构建字体名称,将所述自定义字体的字体名称存储至构建的字体名称队列的头部位置;
构建模块,用于根据所述反射获取模块获取到的所述字体文件流构建所述自定义字体的字体类;
第二存储模块,还用于将所述构建模块构建的所述自定义字体的字体类以所述字体名称为索引存储至所述字体类库中。
本发明实施例提供的技术方案带来的有益效果是:
通过反射的方式获取自定义字体的字体文件流,利用字体文件流生成自定义字体的字体类,在浏览器加载网页时,优先利用自定义字体的字体类显示该网页中的字符;由于自定义字体的字体文件流是系统在初始化的时候通过自定义字体文件读取进来的,并不依赖于系统的自定义字体文件的路径,通过自定义字体的字体文件流就可以实现浏览器中自定义字体的显示,且这种实现方式有效地避免了兼容性问题,在不同厂商提供的设备中均能够实现浏览器对自定义字体的自适应。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明部分实施例提供的智能设备中浏览器使用字体时的示意图;
图2A是本发明一个实施例中提供的浏览器自适应自定义字体的方法的流程图;
图2B是本发明一个实施例中提供的字体名称队列的示意图;
图3A是本发明另一个实施例中提供的浏览器自适应自定义字体的方法流程图;
图3B是本发明另一个实施例中提供的字体名称队列的示意图;
图3C是本发明再一个实施例中提供的字体名称队列的示意图;
图3D是本发明再一个实施例中提供的浏览器自适应自定义字体的方法流程图;
图3E是本发明一个实施例中提供的浏览器显示字体的对比图;
图4是本发明部分实施例中提供的智能设备的结构方框图;
图5是本发明一个实施例中提供的浏览器自适应自定义字体的装置的结构示意图;
图6是本发明另一个实施例中提供的浏览器自适应自定义字体的装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
为了便于对本发明实施例的理解,首先对本发明实施例涉及到的一些名词进行解释:
Typeface:用于定义字体的字体类,代表了一种字体,例如宋体、楷体、黑体等,Typeface中定义有FontID、字体的样式(英文:style)属性,style属性可以为正常、加粗、倾斜或加粗倾斜。
Font:具备样式的字体,可以认为是字体的子集,比如字体为宋体时,Font可以是正常宋体、加粗宋体、倾斜宋体或加粗倾斜宋体。
FontID:Font的标识,是全局唯一的标识,比如加粗宋体的FontID与正常宋体的FontID不同,宋体的FontID和楷体的FontID也不同。
Glyph:代表字体的字形,每个字符在对应的字体下都有属于自己的字形,在渲染显示字符时,需要使用该字符的字形以及其他显示属性(比如字号、倾斜、黑体、倾斜黑体、颜色等)进行渲染显示。
GlyphID:代表字符在对应字体下字形的标识,通过GlyphID可以获取字符的Glyph。
FamilyName:代表一种字体的名称,例如“宋体”、“加粗宋体”、“楷体”、“倾斜楷体”、“黑体”等。
ttf:一种字体文件的格式。
字体文件流:是字体文件的二进制数据组成的数据流。
Freetype:是一个开源的字体引擎库,提供了一套用来访问字体文件的应用程序编程接口(英文:Application Programming Interface,简称:API),可以通过Freetype获取字符在对应的字体文件中定义的字形。
在实际应用场景中,智能设备的系统通常会配置有默认的字体,根据默认的字体显示智能设备上的字符。系统配置的字体还可以被修改为自定义字体,系统在将字体修改为自定义字体后,会根据配置的自定义字体优先显示智能设备上的字符。
智能设备中可以安装有浏览器,浏览器在加载网页时需要渲染显示网页中的字体,此时请参见图1所示,其是本发明部分实施例提供的智能设备中浏览器使用字体时的示意图。当系统配置的字体为自定义字体时,浏览器以第一优先级根据网页定义的字体优先渲染显示网页中的字符;当网页中未定义字体或无法利用网页定义的字体渲染显示网页中的字符时,浏览器则以第二优先级使用自定义字体来渲染显示网页中的字符;当自定义字体无法显示某个字符时,则进一步以第三优先级利用默认的字体来渲染显示网页中的该字符。
这里的浏览器可以是独立的浏览器应用程序,也可以是可以使用浏览器内核显示网页的应用程序。
浏览器在自适应自定义的实现过程中,包括浏览器初始化的过程以及加载网页后自适应自定义的过程,具体可以分别参见对图2A和图3A的描述。
浏览器在开启后,首先会对浏览器内核中的字体类库进行初始化,浏览器内核初始化的方法可以如下图2A中的步骤。
图2A是本发明一个实施例中提供的浏览器自适应自定义字体的方法的流程图,该浏览器自适应自定义字体的方法可以包括如下步骤:
步骤201,在对浏览器内核中的字体类库进行初始化时,通过反射的方式获取系统当前正在使用的自定义字体的字体文件流。
浏览器内核中的字体类库用于存储字体类Typeface,浏览器在加载网页后需要对网页中的字体进行渲染显示时,需要从字体类库中读取可以支持网页字符显示的字体类,利用读取的字体类对字符进行显示。
而字体类库一般是浏览器内核在内存中开辟的存储空间,当浏览器关闭后,该字体类库也通常会被清除。因此,每当浏览器开启之后,浏览器内核均会先初始化字体类库。
可选的,在浏览器已经处于开启的状态下,系统重新配置了自定义字体,系统在配置完自定义字体之后,系统中正在运行的应用程序均会被注销,包括浏览器内核中的字体类库,此时浏览器可以被认为重新开启,浏览器也会对字体类库进行初始化。
由于自定义字体的字体文件流是系统在初始化的时候通过自定义字体文件读取进来的,并不依赖于系统的自定义字体文件的路径,因此浏览器通过反射的方式获取自定义字体的字体文件流时,不受智能设备生产厂商的限制。
可选的,浏览器在通过反射的方式获取系统当前正在使用的自定义字体的字体文件流时,可以通过反射的方式调用系统当前正在使用的自定义字体的API,通过调用的API获取自定义字体的字体文件流。
举例来讲,浏览器可以通过反射的方式调用Native层上参数为FontID的用于获取系统当前正在使用的自定义字体的API,以获取自定义字体的字体文件流。
再举例来讲,浏览器可以通过反射的方式调用Native层上参数为字体类的用于获取系统当前正在使用的自定义字体的API,以获取自定义字体的字体文件流。
步骤202,为该自定义字体构建字体名称,将自定义字体的字体名称存储至构建的字体名称队列的头部位置。
由于浏览器是通过反射方式获取的自定义字体的文件流,因此无法获取自定义字体的字体名称FamilyName,此时,浏览器内核可以为系统当前正在使用的自定义字体构建一个字体名称,该字体名称一般是一个假的字体名称。
为了保证在后续查找字体类时可以优先查找到自定义字体的字体类,浏览器内核将自定义字体的字体名称存储至构建的字体名称队列的头部位置。
步骤203,根据该字体文件流构建自定义字体的字体类,将自定义字体的字体类以自定义字体的字体名称为索引存储至字体类库中。
为了避免浏览器内核长时间存储字体文件流,这里可以预先为自定义字体创建字体类。
一般的,自定义字体的字体文件用于构建自定义字体的字体类,在利用自定义字体的字体文件构建自定义字体的字体类时,需要将自定义字体的字体文件转换成字体文件流,利用字体文件流来构建自定义字体的字体类,因此本实施例中可以直接利用反射方式获取到的字体文件流来构建自定义字体的字体类。
可选的,浏览器在根据该字体文件流构建自定义字体的字体类时,可以调用SkTypeface*createFromStream(SkStream*stream)这个API,以字体文件流为参数,该API的返回值记为根据该字体文件流构建的字体类。
浏览器在构建自定义字体的字体类后,将自定义字体的字体类存储至字体类库中。为了能够通过自定义字体的名称查找到自定义字体的字体类,浏览器可以将自定义字体的字体类以自定义字体的字体名称为索引存储至字体类库中。
综上所述,本发明实施例提供的浏览器自适应自定义字体的方法,通过反射的方式获取自定义字体的字体文件流,根据字体文件流构建自定义字体的字体类,并将构建的字体类缓存至浏览器内核的字体类库中,为自定义字体构建字体名称,且将自定义字体的字体名称放置在字体名称队列的头部位置,便于后续在加载网页时,可以先遍历自定义字体,在自定义字体支持对字符的显示时,实现浏览器自适应自定义字体的效果。
由于每个字体可能不会支持显示所有的字符,因此浏览器在渲染显示网页中的字符时,很有可能会使用到系统的默认字体,因此,在对浏览器内核中的字体类库进行初始化时,可以将系统配置的默认字体的字体名称添加至构建的字体名称队列中。
在实际实现时,系统的默认字体配置文件中记载了系统配置的默认字体的字体名称,浏览器可以从系统的默认字体配置文件中获取该系统配置的各个默认字体的字体名称,然后将各个默认字体的字体名称添加至构建的字体名称队列中。
经过上述初始化的过程后,浏览器内核会存储有一个字体名称队列,该字体名称队列中包括位于头部位置的为自定义字体构建的字体名称,以及位于自定义字体的字体名称之后的各个默认字体的字体名称,字体类库中存储有以自定义字体的字体名称为索引的自定义字体的字体类。
可选的,考虑到后续可能会为默认字体生成字体类,而生成默认字体的字体类需要利用默认字体的字体文件,因此在浏览器内核初始化时,还可以遍历字体名称队列中的每个默认字体的字体名称,获取被遍历到的默认字体的字体名称对应的字体文件的路径(比如ttf文件),将字体文件的路径以对应于被遍历到的默认字体的字体名称的方式存储至字体名称队列中。
依次遍历字体名称队列中的各个默认字体的字体名称,对于遍历出的一个默认字体的字体名称,以该字体名称为索引查找该字体名称所对应的字体文件的路径,将该路径存储至字体名称队列中以与该被遍历到的默认字体的字体名称对应。这里字体文件的路径一般是该字体文件的全路径,也即该字体文件的绝对路径。
在一种实现中,字体名称在字体名称队列中可以以数据结构的形式进行存储,也就是说,字体名称队列中包括至少一个数据结构,每个数据结构中存储有一个字体名称。
每个数据结构中除了可以被添加字体名称之外,还可以被添加与字体名称对应的其他信息,比如,将默认字体的字体文件的路径存储至字体名称队列中包含该默认字体的字体名称的数据结构中。
请参见图2B所示,图2B是本发明一个实施例中提供的字体名称队列的示意图,在图2B中,自定义字体的字体名称是“楷体”,默认字体的字体名称分别是“宋体”、“黑体”、“黑体倾斜”等,对应的字体文件的路径分别为路径1、路径2、路径3等,自定义字体的字体名称位于字体名称队列的头部位置。
综上所述,在浏览器内核初始化时,还将系统配置的默认字体的字体文件的路径与默认字体的字体名称对应存储,使浏览器内核在后续生成默认字体的字体类时可以直接利用字体文件的路径构建字体类,加快了默认字体的字体类的构建速度。
可选的,浏览器在初始化时,还可以为默认字体生成字体类,并将生成的字体类存储至字体类库中。
此时,浏览器首先从系统的默认字体配置文件中获取系统配置的默认字体的字体名称,将默认字体的字体名称存储至字体名称队列中;然后获取默认字体的字体文件的路径,根据该默认字体的字体文件的路径获取该默认字体的字体文件,根据该默认字体的字体文件获取该默认字体的字体类;最后将该默认字体的字体类以该默认字体的字体名称为索引存储至字体类库中。
这样,经过初始化,字体名称队列中存储有为自定义字体构建的字体名称以及各个默认字体的字体名称,字体类库中存储有自定义字体的字体类以及各个默认字体的字体类。
综上所述,在浏览器内核初始化时,还为系统配置的默认字体生成字体类,将生成的字体类存储至字体类库中,使浏览器内核在后续加载网页时,可以直接获取默认字体的字体类,以提高网页加载速度。
为了能够根据字体名称查找到字体类库中的字体类,浏览器至少可以采用如下两种将字体类与字体名称进行对应的方式:
在第一种方式中,浏览器在向字体类库存储字体类时,可以将字体类以及字体名称作为一组对应关系存储至字体类库中。比如,浏览器在将自定义字体的字体类存储至字体类库中时,可以将字体类以及自定义字体的字体名称作为一组对应关系存储至字体类库中。这样,利用字体名称为索引,即可查找到字体类库中具备该字体名称的对应关系,读取该对应关系中的字体类。
在第二种方式中,由于字体类中定义有FontID,且FontID是全局标识,因此浏览器在为字体名称的字体构建的字体类之后,可以将字体类中的FontID以对应于该字体类的字体名称的方式存储至字体名称队列中。
这样,利用字体名称为索引,查找字体名称队列中该字体名称对应的FontID,再从字体类库中读取具备FontID的字体类。
举例来讲,浏览器在构建自定义字体的字体类之后,可以将自定义字体的字体类中的FontID存储至字体名称队列中包含自定义字体的字体名称的数据结构中,仍旧参见图2B所示,图2B中包含自定义字体的字体名称“楷体”的数据结构中还存储有自定义字体的FontID,取值为“FontID1”。
综上所述,浏览器内核在初始化时,可以将自定义字体的字体类中的FontID与自定义字体的字体名称对应存储,为后续浏览器内核获取自定义字体的字体类提供了一种可能实现的方式,且由于仅在字体名称队列中增加了一项FontID,占用的存储空间也比较少。
在对浏览器内核中的字体类库初始化之后,浏览器则可以加载网页,利用初始化的字体类库对网页中的字符进行渲染显示,具体过程可以参见对图3A中的描述。
图3A是本发明另一个实施例中提供的浏览器自适应自定义字体的方法流程图,该浏览器自适应自定义字体的方法包括如下步骤:
步骤301,在利用浏览器内核加载网页时,从字体名称队列的头部位置依次读取字体名称。
由于字体名称队列头部位置存储的是自定义字体的字体名称,因此在从字体名称队列的头部位置依次读取字体名称时,第一个被读取出的字体名称为自定义字体的字体名称。
步骤302,以读取到的字体名称查找位于浏览器内核的字体类库中的字体类。
浏览器在读取到一个字体名称后,可以利用该字体名称从字体类库中查找与该字体名称对应的字体类。
针对字体类与字体名称的两种对应方式,浏览器以读取到的字体名称查找位于浏览器内核的字体类库中的字体类时,可以包括如下两种方式:
在第一种实现方式中,字体类库中可以存储字体名称以及字体类的对应关系,当浏览器从字体名称队列中读取到一个字体名称后,根据字体名称和字体类之间的对应关系,从字体类库中查找与该字体名称对应的字体类。
若能从字体类库中查找到与该字体名称对应的字体类,则执行步骤303,若未能从字体类库中查找到与该字体名称对应的字体类,则需要为读取的字体名称的字体构建字体类。
在第二种实现方式中,浏览器在以读取到的字体名称查找位于浏览器内核的字体类库中的字体类时,检测字体名称队列中是否存储有与该字体名称对应的FontID,在字体名称队列中存储有与该字体名称对应的FontID时,查找该字体类库中具备该FontID的字体类。
一般来讲,由于FontID是在构建字体类后存储的,且FontID是字体类定义的,因此,在字体名称队列中存储有与该字体名称对应的FontID时,通常意味着字体类库中具备该FontID的字体类,也即可以成功查找到字体类,执行步骤303。
结合图2B中的字体名称队列,请参见图3B所示,当从字体名称队列中的头部位置读取字体名称时,首先读取的是自定义字体的字体名称“楷体”,然后从该字体名称所在的数据结构中读取FontID,也即FontID1,然后从字体类库中读取到包含有FontID1的字体类1,此时可以跳转至步骤303。
在字体名称队列中未存储有与该字体名称对应的FontID时,通常意味着字体类库中不具备该FontID的字体类,此时则需要为读取的字体名称的字体构建字体类。
结合图2B中的字体名称队列,请参见图3B所示,当从字体名称队列中读取的字体名称为“宋体”时,字体名称队列中未存储有与该字体名称对应的FontID,表明字体类库中尚未存储有该字体名称的字体对应的字体类,此时则需要为该字体名称的字体构建字体类。
浏览器在未查找到的字体名称的字体构建字体类时,可以根据该字体名称对应的字体文件的路径获取该字体名称对应的字体文件,根据该字体文件名称对应的字体文件构建该字体名称对应的字体类。
可选的,浏览器在为读取的字体名称的字体构建字体类之后,将构建的字体类存储至字体类库中。
可选的,为了便于后续检索到字体类库中存储的该字体类,浏览器在为读取的字体名称的字体构建字体类之后,可以将该字体类中的FontID对应于该字体名称的方式存储至字体名称队列中。
举例来讲,结合图3B中的结果,请参见图3C所示,字体名称队列中仅存储有自定义字体的FontID1,未存储有第一个默认字体对应的FontID,当读取的是第一个默认字体的字体名称“宋体”时,由于未读取到与该“宋体”对应的FontID,因此查找不到字体类,此时则根据该第一个默认字体的字体名称“宋体”、路径1构建该默认字体的字体类,得到字体类2,将字体类2存储至字体类库中,且将字体类2中FontID2存储至字体名称队列的包含有第一个默认字体的字体名称的数据结构中。
浏览器在构建字体类之后,意味着浏览器已经得到读取的字体名称对应的字体类,此时浏览器可以执行步骤303。
步骤303,检测查找到的字体类的字体文件中是否有该网页中字符的字形。
在一种实现中,浏览器在检测查找到的字体类的字体文件中是否具备该网页中字符的字形Glyph时,可以包括如下步骤:
S1、利用查找的字体类调用字体引擎库中用于获取字符字形的应用程序编程接口,通过该应用程序编程接口将该字符传递给字体引擎库。
实际实现时,浏览器从网页的XML文件中获取字符的统一码(英文:Unicode),将字符的统一码传递给字体引擎库。在将该字符传递给字体引擎库之后,字体引擎库可以根据预定的接口读取到该字体类对应的字体文件。
S2、利用字体引擎库对该字体类的字体文件进行分析,确定该字体文件中是否具备该字符的字形,在确定该字体文件流中具备该字符的字形时,输出该字形的字形标识GlyphID,否则输出用于指示该字体类的字体文件不具备该字符的字形的查找结果。
当字体引擎库输出字形标识时,浏览器则认定为查找到的字体类的字体文件中具备该字符的字形。
在实际应用中,为了能够对网页中各个字符进行编码,浏览器可以将网页中的各个字符输入至字体引擎库,利用字体引擎库分别检测字体的字体文件中是否具备这些字符的字形。
步骤304,若查找到的字体类的字体文件中有该网页中字符对应的字形,则利用查找到的字体类显示该网页中的字符。
浏览器在利用查找到的字体类显示该网页中的字符时,利用查找的字体类调用字体引擎库中用于获取字符字形的应用程序编程接口,通过该应用程序编程接口将该字符的字形标识传递给字体引擎库;利用字体引擎库输出该字形标识对应的字形,并显示字形。
在实际应用中,网页的可扩展标记语言(英文:eXtensible Markup Language,简称:XML)文件中可能定义了字符的显示属性,比如style、字号或颜色等,此时,浏览器在显示字形时,需要利用网页对字符定义的style、字号或颜色等显示属性对字形变形(英文:transform)后进行显示。
比如,以查找到的字体类为字体名称为“楷体”的字体类、字符为“囧”为例,检测字体名称为“楷体”的字体类的字体文件中具备字符“囧”的字符,在渲染显示字符时,若字符“囧”的style为倾斜、字号为三号、颜色为黑色,浏览器则根据变形的方式将该字符的字形修改为倾斜、字号修改为三号、颜色修改为黑色,然后进行显示,也即显示以楷体形式的字形、倾斜、字号为三号、颜色为黑色的“囧”。
还比如,如果自定义字体是非正常样式的字体,例如加粗的楷体,则自定义字体名称为“楷体加粗”,在利用自定义字体的字体文件(也即字体为楷体加粗的字体文件)字体类将字符“囧”传入字体引擎库后,字体引擎库也是查找该自定义字体的字体文件中是否具备字符“囧”的字形,如果具备,则利用该字形、网页定义的显示属性(style为倾斜、字号为三号、颜色为黑色)显示该字符“囧”。需要注意的是,因为该字形是加粗的样式,因此即使网页中未将该字符“囧”的style定义为加粗,显示出的字形也是加粗的字形。
步骤305,若查找到的字体类的字体文件中没有该网页中字符对应的字形,则按序读取字体名称队列中的下一个字体名称,获取该下一个字体名称对应的字体类,利用该下一个字体名称对应的字体类显示该网页中的字符。
浏览器在获取下一个字体名称对应的字体类时,如果可以从字体类库中成功读取到该下一个字体名称对应的字体类,则可以利用该字体类显示该网页中的字符;若字体类库中尚未存储有该下一个字体名称对应的字体类,浏览器则根据该下一个字体名称以及与该下一个字体名称对应的字体文件的路径构建字体类。浏览器以读取到的该下一个字体名称查找位于字体类库中的字体类的过程,以及浏览器构建字体类的过程均可以参见步骤302中的描述,这里就不再赘述。
类似的,浏览器在构建该下一个字体名称的字体类之后,将该字体类存储至字体类库中。进一步,浏览器可以将该构建的字体类中的FontID对应于该下一个字体名称存储在字体名称队列中。
综上所述,本发明实施例提供的浏览器自适应自定义字体的方法,通过反射方式获取自定义字体的字体文件流,利用字体文件流生成自定义字体的字体类,在浏览器加载网页时,优先利用自定义字体的字体类显示该网页中的字符;由于定义字体的文件流是系统在初始化的时候通过自定义字体文件读取进来的,并不依赖于系统的自定义字体文件的路径,通过自定义字体的字体文件流就可以实现浏览器中自定义字体的显示,且这种实现方式有效地避免了兼容性问题,在不同厂商提供的设备中均能够实现浏览器对自定义字体的自适应。
在实际应用中,网页可能会定义用于显示网页中字符的字体,此时为了尽可能地保证字符的显示效果符合网页的需求,优先考虑使用字体类库中可以渲染显然网页中字符的字体,如果查找不到,则采用图3A中的方式,优先考虑自定义字体,在自定义字体也无法支持对字符的显示时,再考虑默认字体。因此,在步骤301之前,浏览器自适应自定义字体的方法还可以包括图3D中的步骤306。
步骤306,在利用浏览器内核加载网页时,检测该网页是否定义有用于显示字符的字体的字体名称。
网页的XML文件定义了渲染网页所需要的代码,因此如果网页定义了用于显示字符的字体的字体名称,网页的XML文件中则包含有字体名称,执行步骤307。
也就是说,浏览器可以检测网页的XML文件中是否包含有字体名称。
当网页定义渲染显示字体的字体名称时,浏览器则可以从网页的XML文件中读取到字体名称,比如“宋体”、“楷体”、“黑体”等。
当网页未定义渲染显示字体的字体名称时,浏览器则无法从网页的XML文件中读取到字体名称,此时则直接执行步骤301。
步骤307,在该网页定义有字体名称时,检测该网页定义的字体名称是否位于字体名称队列中。
在浏览器获取到网页定义的字体名称时,为了优先使用网页中定义的字体来渲染显示网页上的字符,浏览器可以先检测该网页定义的字体名称是否位于字体名称队列中。
若该网页定义的字体名称位于字体名称队列中,表明该网页定义的字体与系统配置的某个默认字体相同,此时根据该字体名称查找字体类库中的字体类,如果未查找到,则根据字体名称队列中该字体名称的字体文件的路径构建字体类,利用构建的字体类的字体文件中是否具备网页中字符的字形,在具备字符的字形时,则利用该字形以及网页定义的字符的其他显示属性对字符进行显示。
在该网页定义的字体名称未位于字体名称队列中时,对于该网页中的每个字符,从字体名称队列的头部位置依次读取字体名称,也即执行步骤301。
综上所述,本发明实施例提供的浏览器自适应自定义字体的方法,通过优先考虑网页中定义的字体,在网页中定义的字体不存在或网页中未定义字体时,再优先利用自定义字体的字体类显示该网页中的字符;由于定义字体的文件流是系统在初始化的时候通过自定义字体文件读取进来的,并不依赖于系统的自定义字体文件的路径,通过自定义字体的字体文件流就可以实现浏览器中自定义字体的显示,且这种实现方式有效地避免了兼容性问题,在不同厂商提供的设备中均能够实现浏览器对自定义字体的自适应。
经过图2A中对字体名称队列的构建,不仅可以根据反射方式获取到自定义字体的字体文件流,并根据字体文件流成功构建了自定义字体的字体类,还使得自定义字体的名称位于字体名称队列的头部位置,从而使得在经过图3A的步骤,优先考虑采用自定义字体来渲染显示网页中的字符,在自定义字体无法渲染显示网页中的字符时,则考虑可以支持字符显示的默认字体来渲染显示该字符。也就是说,只要自定义字体可以支持对网页中全部或部分字体的显示,基本实现了浏览器对自定义字体的自适应,利用自定义字体渲染显示网页的效果可以参见图3E所示。图3E中网中没有定义显示字符的字体,若按照网络系统配置的字体(比如宋体)显示该网页内容时,显示效果为宋体,而优先考虑到自定义字体(比如楷体)显示该网页内容时,显示效果则为楷体。
请参见图4所示,其示出了本发明部分实施例中提供的智能设备的结构方框图。该智能设备400为安装有智能系统以及浏览器的设备,比如智能手机、平板电脑、多媒体阅读器等,智能系统可以为安卓系统、iOS系统等。
本发明中的智能设备400可以包括一个或多个如下组成部分:用于执行计算机程序指令以完成各种流程和方法的处理器,用于信息和存储程序指令随机接入存储器(RAM)和只读存储器(ROM),用于存储数据和信息的存储器,I/O设备,界面,天线等。具体来讲:
智能设备400可以包括存储器420、显示单元440、处理器480、电源482等部件。本领域技术人员可以理解,图4中示出的智能设备结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图4对智能设备400的各个构成部件进行具体的介绍:
存储器420可用于存储软件程序以及模块,处理器480通过运行存储在存储器420的软件程序以及模块,从而执行智能设备400的各种功能应用以及数据处理。存储器420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如浏览器)等;存储数据区可存储根据智能设备400的使用所创建的数据(比如浏览器初始化时构建的字体、加载网页时产生的数据等)等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
显示单元440可用于显示由用户输入的信息或提供给用户的信息以及智能设备400的各种菜单。显示单元440可包括显示面板441,可选的,可以采用液晶显示器(英文:Liquid Crystal Display,简称:LCD)、有机发光二极管(英文:Organic Light-EmittingDiode,简称:OLED)等形式来配置显示面板441。进一步的,触控面板可覆盖显示面板441,当触控面板检测到在其上或附近的触摸操作后,传送给处理器480以确定触摸事件的类型,随后处理器480根据触摸事件的类型在显示面板441上提供相应的视觉输出。触控面板与显示面板441可以作为两个独立的部件来实现智能设备400的输入和输入功能,但是在某些实施例中,可以将触控面板与显示面板441集成而实现智能设备400的输入和输出功能。
处理器480是智能设备400的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器420内的软件程序和/或模块,以及调用存储在存储器420内的数据,执行智能设备400的各种功能和处理数据,从而对智能设备进行整体监控。可选的,处理器480可包括一个或多个处理单元;优选的,处理器480可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器480中。
智能设备400还包括给各个部件供电的电源482(比如电池),优选的,电源可以通过电源管理系统与处理器480逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
存储器中的一个或者多个程序被配置成由一个或者多个处理器执行。上述一个或者多个程序用于实现上述的浏览器内核初始化方法以及浏览器自适应自定义字体的方法。
图5是本发明一个实施例中提供的浏览器自适应自定义字体的装置的结构示意图,该浏览器自适应自定义字体的装置可以包括:反射获取模块501、第一存储模块502、构建模块503和第二存储模块504。
反射获取模块501至少用于实现步骤201的功能;
第一存储模块502至少用于实现步骤202的功能;
构建模块503至少用于实现步骤203中构建字体类的功能;
第二存储模块504至少用于将构建模块503构建的字体名称所对应的字体的字体类以该字体名称为索引存储至字体类库中。
在一种实现方式中,第一存储模块502还至少用于实现从系统的默认字体配置文件中获取系统配置的各个默认字体的字体名称,将各个默认字体的字体名称存储至字体名称队列中。
在一种实现方式中,该装置还可以包括路径获取模块。
该路径获取模块至少用于获取默认字体的字体文件的路径,默认字体的字体文件用于构建默认字体的字体类;
第一存储模块502还至少用于将路径获取模块获取到的默认字体的字体文件的路径以对应于默认字体的字体名称的方式存储至字体名称队列中。
在另一种实现方式中,该装置还可以包括路径获取模块和字体文件获取模块。
该路径获取模块还至少用于获取默认字体的字体文件的路径;
字体文件获取模块,用于根据路径获取模块获取的默认字体的字体文件的路径获取该默认字体的字体文件;
该构建模块503还至少用于根据默认字体的字体文件构建默认字体的字体类;
该第二存储模块504还至少用于将构建模块503构建的默认字体的字体类以默认字体的字体名称为索引存储至字体类库中。
在一种实现方式中,第二存储模块504还至少用于将字体类中的FontID存储至字体名称队列中以与自定义字体的字体名称对应,将自定义字体的字体类存储至该字体类库中。
综上所述,本发明实施例提供的浏览器自适应自定义字体的装置,通过反射的方式获取自定义字体的字体文件流,根据字体文件流构建自定义字体的字体类,并将构建的字体类缓存至浏览器内核的字体类库中,为自定义字体构建字体名称,且将自定义字体的字体名称放置在字体名称队列的头部位置,便于后续在加载网页时,可以先遍历自定义字体,在自定义字体支持对字符的显示时,实现浏览器自适应自定义字体的效果。
在浏览器内核初始化时,还将系统配置的默认字体的字体文件的路径与默认字体的字体名称对应存储,使浏览器内核在后续生成默认字体的字体类时可以直接利用字体文件的路径构建字体类,加快了默认字体的字体类的构建速度。
另外,浏览器内核在初始化时,可以将自定义字体的字体类中的FontID与自定义字体的字体名称对应存储,为后续浏览器内核获取自定义字体的字体类提供了一种可能实现的方式,且由于仅在字体名称队列中增加了一项FontID,占用的存储空间也比较少。
在另一种实现中,该浏览器自适应自定义字体的装置除了可以包含图5中的各个模式,还可以包括其他的模块,请参见图6所示。
图6是本发明另一个实施例中提供的浏览器自适应自定义字体的装置结构示意图,该浏览器自适应自定义字体的装置还可以包括:读取模块601、查找模块602和显示模块603。
读取模块601至少用于实现步骤301的功能;
查找模块602至少用于实现步骤302的功能;
显示模块603至少用于实现步骤304的功能。
在一种实现中,查找模块602可以包括:检测单元和查找单元。
检测单元,用于检测字体名称队列中是否存储有与该字体名称对应的FontID;
查找单元,用于在检测单元检测到字体名称队列中存储有与该字体名称对应的FontID时,查找字体类库中具备该FontID的字体类,该FontID是该字体类构建完成后添加至字体名称队列中的。
在一种实现中,字体名称队列的头部位置后存储有系统配置的各个默认字体的字体名称,该装置还可以包括:第一检测模块和字体类获取模块。
第一检测模块至少用于实现步骤303的功能;
读取模块601还至少用于实现步骤305中在检测查找到的字体类的字体文件中没有该网页中的字符对应的字形时,按序读取字体名称队列中的下一个字体名称的功能;
字体类获取模块用于实现步骤305中获取该下一个字体名称对应的字体类的功能;
该显示模块603还至少用于实现步骤305中利用字体类获取模块获取到的该下一个字体名称对应的字体类显示该网页中的字符的功能。
在一种实现中,字体名称队列中还存储有与默认字体的字体名称对应的字体文件的路径,字体类获取模块还可以包括:查询单元和构架单元。
该查询单元至少用于从字体名称队列中查询下一个字体名称对应的字体文件的路径;
该构建单元至少用于根据查询单元查询到的下一个字体名称对应的字体文件的路径获取下一个字体名称对应的字体文件,根据下一个字体名称对应的字体文件构建下一个字体名称对应的字体类。
在一种实现中,该字体类获取模块还可以包括:存储单元。
该存储单元至少用于将构建单元构建的字体类存储至字体类库中,将字体类中的FontID以对应于字体名称的方式存储至字体名称队列中。
在一种实现中,该装置还可以包括:第二检测模块和第三检测模块。
第二检测模块至少用于实现步骤306的功能;
第三检测模块至少用于实现步骤307的功能;
读取模块601还至少用于在第三检测模块检测到网页定义的字体名称未位于所述字体名称队列中时,对于该网页中的每个字符,从字体名称队列的头部位置读取字体名称。
读取模块601还至少用于在该网页未定义有字体名称时,对于该网页中的每个字符,从字体名称队列的头部位置依次读取字体名称。
综上所述,本发明实施例提供的浏览器自适应自定义字体的装置,通过反射方式获取自定义字体的字体文件流,利用字体文件流生成自定义字体的字体类,在浏览器加载网页时,优先利用自定义字体的字体类显示该网页中的字符;由于定义字体的文件流是系统在初始化的时候通过自定义字体文件读取进来的,并不依赖于系统的自定义字体文件的路径,通过自定义字体的字体文件流就可以实现浏览器中自定义字体的显示,且这种实现方式有效地避免了兼容性问题,在不同厂商提供的设备中均能够实现浏览器对自定义字体的自适应。
需要说明的是:上述实施例中提供的浏览器自适应自定义字体的装置在处理业务浏览器自适应自定义字体时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将智能设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的浏览器自适应自定义字体的装置与浏览器自适应自定义字体的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由智能设备的处理器执行以完成上述浏览器自适应自定义字体的方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (15)
1.一种浏览器自适应自定义字体的方法,其特征在于,所述方法包括:
在对浏览器内核中的字体类库进行初始化时,通过反射的方式获取系统当前正在使用的自定义字体的字体文件流;
为所述自定义字体构建字体名称,将所述自定义字体的字体名称存储至构建的字体名称队列的头部位置;
根据所述字体文件流构建所述自定义字体的字体类,将所述自定义字体的字体类以所述字体名称为索引存储至所述字体类库中。
2.根据权利要求1所述的方法,其特征在于,所述通过反射的方式获取系统当前正在使用的自定义字体的字体文件流,包括:
通过反射的方式调用所述系统当前正在使用的自定义字体的应用程序编程接口,通过所述应用程序编程接口获取所述自定义字体的字体文件流。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从所述系统的默认字体配置文件中获取所述系统配置的默认字体的字体名称,将所述默认字体的字体名称按序存储至所述字体名称队列中。
4.根据权利要求3所述的方法,其特征在于,在所述将所述默认字体的字体名称按序存储至所述字体名称队列中之后,所述方法还包括:
获取所述默认字体的字体文件的路径,所述默认字体的字体文件用于构建所述默认字体的字体类;
将所述默认字体的字体文件的路径以对应于所述默认字体的字体名称的方式存储至所述字体名称队列中。
5.根据权利要求3所述的方法,其特征在于,在所述将所述默认字体的字体名称按序存储至所述字体名称队列中之后,所述方法还包括:
获取所述默认字体的字体文件的路径;
根据所述默认字体的字体文件的路径获取所述默认字体的字体文件;
根据所述默认字体的字体文件获取所述默认字体的字体类;
将所述默认字体的字体类以所述默认字体的字体名称为索引存储至所述字体类库中。
6.根据权利要求1-5中任一所述的方法,其特征在于,所述方法还包括:
在所述浏览器加载网页时,从所述字体名称队列的头部位置开始读取字体名称,以读取到的字体名称查找位于所述浏览器内核的字体类库中的字体类;
利用查找到的字体类显示所述网页中的字符。
7.根据权利要求6所述的方法,其特征在于,所述字体名称队列的头部位置后存储有系统配置的各个默认字体的字体名称以及与所述字体名称对应的字体文件的路径;所述方法还包括:
检测查找到的字体类的字体文件中是否有所述网页中的字符对应的字形;
若查找到的字体类的字体文件中有所述网页中的字符对应的字形,则执行所述利用查找到的字体类显示所述网页中的字符的步骤;
若查找到的字体类的字体文件中没有所述网页中的字符对应的字形,则按序读取所述字体名称队列中的下一个字体名称,从所述字体名称队列中查询所述下一个字体名称对应的字体文件的路径;根据所述下一个字体名称对应的字体文件的路径获取所述下一个字体名称对应的字体文件,根据所述下一个字体名称对应的字体文件构建所述下一个字体名称对应的字体类,利用所述下一个字体名称对应的字体类显示所述网页中的字符。
8.一种浏览器自适应自定义字体的装置,其特征在于,所述装置包括:
反射获取模块,用于在对浏览器内核中的字体类库进行初始化时,通过反射的方式获取系统当前正在使用的自定义字体的字体文件流;
第一存储模块,用于为所述自定义字体构建字体名称,将所述自定义字体的字体名称存储至构建的字体名称队列的头部位置;
构建模块,用于根据所述反射获取模块获取到的所述字体文件流构建所述自定义字体的字体类;
第二存储模块,还用于将所述构建模块构建的所述自定义字体的字体类以所述字体名称为索引存储至所述字体类库中。
9.根据权利要求8所述的装置,其特征在于,所述反射获取模块,还用于:
通过反射的方式调用所述系统当前正在使用的自定义字体的应用程序编程接口,通过所述应用程序编程接口获取所述自定义字体的字体文件流。
10.根据权利要求8所述的装置,其特征在于,所述第一存储模块,还用于从所述系统的默认字体配置文件中获取所述系统配置的默认字体的字体名称,将所述默认字体的字体名称按序存储至所述字体名称队列中。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
路径获取模块,用于获取所述第一存储模块存储的默认字体的字体文件的路径,所述默认字体的字体文件用于构建所述默认字体的字体类;
所述第一存储模块,还用于将所述路径获取模块获取到的所述默认字体的字体文件的路径以对应于所述默认字体的字体名称的方式存储至所述字体名称队列中。
12.根据权利要求11所述的装置,其特征在于,所述路径获取模块,还用于获取所述第一存储模块存储的默认字体的字体文件的路径;
所述装置还包括:
字体文件获取模块,用于根据所述路径获取模块获取的所述默认字体的字体文件的路径获取所述默认字体的字体文件;
所述构建模块,还用于根据所述默认字体的字体文件构建所述默认字体的字体类;
所述第二存储模块,还用于将所述构建模块构建的所述默认字体的字体类以所述默认字体的字体名称为索引存储至所述字体类库中。
13.根据权利要求8-12中任一所述的装置,其特征在于,所述装置还包括:
读取模块,用于在所述浏览器加载网页时,从所述字体名称队列的头部位置开始读取字体名称;
查找模块,用于以所述读取模块读取到的字体名称查找位于所述浏览器内核的字体类库中的字体类;
显示模块,用于利用所述查找模块查找到的字体类显示所述网页中的字符。
14.根据权利要求13所述的装置,其特征在于,所述字体名称队列的头部位置后存储有系统配置的各个默认字体的字体名称以及与所述字体名称对应的字体文件的路径;所述装置还包括:
第一检测模块,用于检测所述查找模块查找到的字体类的字体文件中是否有所述网页中的字符对应的字形;
所述显示模块,还用于在所述第一检测模块检测查找到的字体类的字体文件中有所述网页中的字符对应的字形时,利用查找到的字体类显示所述网页中;
所述读取模块,还用于在所述检测模块检测查找到的字体类的字体文件中没有所述网页中的字符对应的字形时,按序读取所述字体名称队列中的下一个字体名称;
字体类获取模块,用于从所述字体名称队列中查询所述下一个字体名称对应的字体文件的路径;根据所述下一个字体名称对应的字体文件的路径获取所述下一个字体名称对应的字体文件,根据所述下一个字体名称对应的字体文件构建所述下一个字体名称对应的字体类;
所述显示模块,还用于利用所述字体类获取模块获取到的所述下一个字体名称对应的字体类显示所述网页中的字符。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至7任一权利要求所述的一种浏览器自适应自定义字体的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610942692.0A CN108021567B (zh) | 2016-11-01 | 2016-11-01 | 浏览器自适应自定义字体的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610942692.0A CN108021567B (zh) | 2016-11-01 | 2016-11-01 | 浏览器自适应自定义字体的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108021567A CN108021567A (zh) | 2018-05-11 |
CN108021567B true CN108021567B (zh) | 2020-05-12 |
Family
ID=62069885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610942692.0A Active CN108021567B (zh) | 2016-11-01 | 2016-11-01 | 浏览器自适应自定义字体的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108021567B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113822011A (zh) * | 2020-06-19 | 2021-12-21 | 华为技术有限公司 | 字体切换方法及电子设备 |
CN115859910A (zh) * | 2022-12-20 | 2023-03-28 | 北京百度网讯科技有限公司 | 一种文本渲染方法、装置、电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049261A (zh) * | 2012-12-11 | 2013-04-17 | 广东欧珀移动通信有限公司 | 一种移动终端字体更换方法 |
CN103761110A (zh) * | 2014-02-18 | 2014-04-30 | 优视科技有限公司 | 浏览器字体显示处理方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424192A (zh) * | 2013-08-20 | 2015-03-18 | 北大方正集团有限公司 | 形成多字型字库、通过该字库显示不同字型的方法及装置 |
-
2016
- 2016-11-01 CN CN201610942692.0A patent/CN108021567B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049261A (zh) * | 2012-12-11 | 2013-04-17 | 广东欧珀移动通信有限公司 | 一种移动终端字体更换方法 |
CN103761110A (zh) * | 2014-02-18 | 2014-04-30 | 优视科技有限公司 | 浏览器字体显示处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108021567A (zh) | 2018-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11403364B2 (en) | Method and terminal device for extracting web page content | |
US11868785B2 (en) | Application program page processing method and device | |
US20210216700A1 (en) | Information Processing Method and System | |
KR102179149B1 (ko) | 페이지 컴포넌트 동적 레이아웃 | |
CN108319489B (zh) | 应用页面的启动方法、装置、存储介质及电子设备 | |
US20210203767A1 (en) | Information Processing Method and Apparatus, Storage Medium, and Electronic Device | |
CN111475246A (zh) | 小程序页面显示方法、装置、终端和存储介质 | |
CN108363528B (zh) | 应用页面的启动方法、装置、存储介质及电子设备 | |
CN108228305A (zh) | 应用页面的显示方法、装置、存储介质及电子设备 | |
CN108287917B (zh) | 文件打开方法、装置、存储介质及电子设备 | |
EP3842929A1 (en) | Method and apparatus for processing structured data, and storage medium and electronic device | |
CN108287918B (zh) | 基于应用页面的音乐播放方法、装置、存储介质和电子设备 | |
CN108647032B (zh) | 应用加载方法及装置、计算机装置和计算机可读存储介质 | |
WO2020206691A1 (zh) | 应用程序的处理方法、装置、存储介质及电子设备 | |
EP2866158A1 (en) | Method for reader to provide service, reader, terminal and computer storage medium | |
CN109684573B (zh) | 目标图片显示方法及装置、存储介质、电子设备 | |
CN111367518A (zh) | 页面布局方法、装置、计算设备及计算机存储介质 | |
CN114706633B (zh) | 预加载方法、电子设备及存储介质 | |
CN110795172B (zh) | 前台进程控制方法、装置、电子设备以及存储介质 | |
CN108021567B (zh) | 浏览器自适应自定义字体的方法及装置 | |
CN112463272B (zh) | 一种界面布局加载显示方法、系统、电子设备及存储介质 | |
CN115658109A (zh) | 微服务热部署方法、系统、电子设备和存储介质 | |
WO2021253922A1 (zh) | 字体切换方法及电子设备 | |
CN114237795A (zh) | 终端界面显示方法、装置、电子设备及可读存储介质 | |
CN114090083A (zh) | 一种可视化组件配置方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |