CN117350248A - 字体切换方法、装置、电子设备及存储介质 - Google Patents
字体切换方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117350248A CN117350248A CN202311427234.XA CN202311427234A CN117350248A CN 117350248 A CN117350248 A CN 117350248A CN 202311427234 A CN202311427234 A CN 202311427234A CN 117350248 A CN117350248 A CN 117350248A
- Authority
- CN
- China
- Prior art keywords
- font
- file
- family
- switching
- switching instruction
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000009877 rendering Methods 0.000 claims abstract description 28
- 238000013507 mapping Methods 0.000 claims abstract description 26
- 230000000007 visual effect Effects 0.000 claims description 61
- 230000001105 regulatory effect Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 description 53
- 230000008569 process Effects 0.000 description 16
- 230000004044 response Effects 0.000 description 10
- 230000000694 effects Effects 0.000 description 7
- 230000001960 triggered effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
- G06F40/109—Font handling; Temporal or kinetic typography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Library & Information Science (AREA)
- Document Processing Apparatus (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本申请公开了一种字体切换方法、装置、电子设备及存储介质,属于电子设备技术领域,该方法包括:响应于字体切换指令,根据系统字体配置文件中字体与字体族的映射关系,查找第一字体对应的第一字体族文件;所述字体切换指令用于指示将系统字体从所述第一字体切换为第二字体,所述第一字体族文件中包含用于绘制所述第一字体的第一字型文件;创建用于绘制所述第二字体的第二字型文件;将所述第一字体族文件中所述第一字型文件替换为所述第二字型文件;响应于用户打开界面的操作,基于所述第一字体族文件中的所述第二字型文件,对所述界面上的视图文本进行字体渲染。
Description
技术领域
本申请属于电子设备技术领域,具体涉及一种字体切换方法、装置、电子设备及存储介质。
背景技术
随着电子设备的快速发展,电子设备的便捷操作和人化设计成为电子设备不可忽视的一部分,例如,用户希望可以切换电子设备系统的字体,获得更丰富的视觉体验。相关技术中,在进行系统字体切换时,会消耗大量系统内存,导致系统操作卡顿,影响电子设备的正常工作。
发明内容
本申请实施例的目的是提供一种字体切换方法、装置、电子设备及存储介质,能够降低系统字体切换所消耗的内存量,确保电子设备的正常工作。
第一方面,本申请实施例提供了一种字体切换方法,所述方法包括:
响应于字体切换指令,根据系统字体配置文件中字体与字体族的映射关系,查找第一字体对应的第一字体族文件;所述字体切换指令用于指示将系统字体从所述第一字体切换为第二字体,所述第一字体族文件中包含用于绘制所述第一字体的第一字型文件;
创建用于绘制所述第二字体的第二字型文件;
将所述第一字体族文件中所述第一字型文件替换为所述第二字型文件;
响应于用户打开界面的操作,基于所述第一字体族文件中的所述第二字型文件,对所述界面上的视图文本进行字体渲染。
第二方面,本申请实施例提供了一种字体切换装置,所述方法包括:
查找模块,用于响应于字体切换指令,根据系统字体配置文件中字体与字体族的映射关系,查找第一字体对应的第一字体族文件;所述字体切换指令用于指示将系统字体从所述第一字体切换为第二字体,所述第一字体族文件中包含用于绘制所述第一字体的第一字型文件;
创建模块,用于创建用于绘制所述第二字体的第二字型文件;
替换模块,用于将所述第一字体族文件中所述第一字型文件替换为所述第二字型文件;
渲染模块,用于响应于用户打开界面的操作,基于所述第一字体族文件中的所述第二字型文件,对所述界面上的视图文本进行字体渲染。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的字体切换方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的字体切换方法的步骤。
第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述字体切换方法的步骤。
第六方面,本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面所述字体切换方法的步骤。
在本申请实施例中,响应于字体切换指令,根据系统字体配置文件中字体与字体族的映射关系,查找第一字体对应的第一字体族文件;字体切换指令用于指示将系统字体从第一字体切换为第二字体,第一字体族文件中包含用于绘制第一字体的第一字型文件;创建用于绘制第二字体的第二字型文件;将第一字体族文件中第一字型文件替换为第二字型文件;响应于用户打开界面的操作,基于第一字体族文件中的第二字型文件,对界面上的视图文本进行字体渲染。可见,本申请实施例中,在用户切换系统的字体时,可以通过更新字体的字型文件的方式,来实现界面上字体的切换,由于创建字型文件占用较少的系统内存,因此能够降低系统字体切换所消耗的内存量,确保电子设备的正常工作。
附图说明
图1是本申请实施例提供的不同视觉尺寸值的字体效果的示例图之一;
图2是本申请实施例提供的不同视觉尺寸值的字体效果的示例图之二;
图3是本申请实施例提供的一种字体切换方法的流程图之一;
图4是本申请实施例提供的一种字体切换方法的流程图之二;
图5是本申请实施例提供的一种字体切换装置的结构框图;
图6是本申请实施例提供的一种电子设备的结构示意图;
图7是实现本申请各个实施例的一种电子设备的硬件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请实施例提供了一种字体切换方法、装置、电子设备及存储介质。为了便于理解,首先对本申请实施例中涉及到的一些概念和应用场景进行介绍。
一、概念
系统运行库层,也称为Native层,是Android系统架构中的一个层,这一层通过C/C++库来为Android系统提供了主要的特性支持。
应用框架层,也称为JAVA层,也是Android系统架构中的一个层,这一层主要提供了构建应用程序是可能用到的各种API,Android系统自带的一些核心应用程序就是使用这些API实现的,开发者也可以使用这些API来构建自己的应用程序。
Typeface对象,也称为字体对象、字体文件,是表示字体的类,它表示了一种特定风格的字形集合,可以用于在Android系统的应用程序中渲染视图文本,Typeface对象可以通过从系统资源或自定义字体文件中加载来创建。Android系统提供了几种预定义的字体风格,例如楷体、宋体、黑体、仿宋体、方正字体等,也可以使用自定义字体文件来创建Typeface对象。
Font对象,也称为字型对象、字型文件,是表示一种字体的引用,通常是一种预定义的系统字体或开发者自定义的字体,内部存储了字库文件的路径信息和字体可变轴参数等信息。
FontFamily对象,也称为字体族对象或者字体族文件,是一个表示字体族群的类,可用于创建Typeface对象,FontFamily对象内部包含了很多Font对象,相当于Font对象的容器,可用于绘制各种文本样式的字体。
fonts.xml文件,也称为系统字体配置文件,是系统所有字体文件的配置文件。fonts.xml文件中包含多个`<family>`标签和多个`<alias>`标签,其中,`<family>`标签为字体族标签,`<alias>`标签为别名标签,每个`<family>`标签下包含多个`<font>`标签,`<font>`标签为字型标签,每个`<font>`标签下包含字库文件的路径信息和`<axis>`标签,`<axis>`标签为字体可变轴标签,`<axis>`标签下包含字体可变轴参数,`<alias>`标签用于指示`<axis>`标签下的各个字体可变轴参数的别名。在fonts.xml文件中有一个特殊的family,它的名称是`sans-serif`,`sans-serif`表示系统当前使用的字体族。
字体的样式,指的是各种在线字体,彩色的或者其他的字体,主题商店里面有很多字体可供下载,例如,字体样式为楷体、宋体、黑体等。
字体的粗细,也称为字体的字重,通常包括多个档位,例如包括9个档位100、200、300、350、400、500、600、700、800,分别为淡体Thin/Hairline、特细Extra-Light/Ultra-Light、细体Light、次细Demi-Light、标准Regular/Normal/Book/Plain、适中Medium、次粗Demi-Bold/Semi-Bold、粗体Bold、特粗Extra-bold/Extra。又例如包括8个档位100、200、300、400、500、600、700、800,分别为淡体Thin/Hairline、特细Extra-Light/Ultra-Light、细体Light、标准Regular/Normal/Book/Plain、适中Medium、次粗Demi-Bold/Semi-Bold、粗体Bold、特粗Extra-bold/Extra。
字体的视觉尺寸,也称为字体的中宫,通常也包括多个档位,例如包括13个档位,其中,视觉尺寸通常包括以下几个特点:缩放特点、笔画避让特点、交叉减细特点和空间特点;对于缩放特点,小字号采用大字面、大中宫,以提高易读性,字号越大中宫越小,以提高美观度;对于笔画避让特点,小字号笔画避让,以加大笔画间隙,减少视觉粘连;对于交叉减细特点,小字号复杂笔画交接处做减细处理,以使视觉更清晰;对于空间特点,以图1为例,左侧和右侧的中心圆形一样大,但右侧外围的几个圆形比较小,就让人产生了右侧的中心圆形比左侧大的错觉,这就是视错觉原理:在一个特定的方框中,适当加大中间的空间,缩小四周边缘的空间,使中宫加大,增强了字体的可视范围,从而使文本更加醒目易读。以图2为例,上面一组九宫格的中间方格大,四周方格小,显得舒展,下面一组的九宫格九个方格一样大,显得紧簇,随着九宫格由小到大的变化,舒展和紧簇的感觉会增强,区别也更加明显,可以看出最后的两个小九宫格,上面一组九宫格的小方格在视觉上明显比下面一组九宫格的小方格要舒展。
字体,指的是字体的样式、粗细程度和视觉尺寸的上位概念。
字体原生加载流程:在电子设备开机时,电子设备的系统服务进程(Systemserver进程),会解析fonts.xml文件并实例化创建Typeface对象、Font对象、FontFamily对象,这些对象包含了字体显示所需要的参数,传递给系统的底层渲染引擎进行字体的渲染。以上解析创建的Typeface对象只存在于System server进程中,应用进程在启动时,Systemserver进程通过共享内存(Share Memory)的方式将Typeface对象传给应用进程,使得应用界面上的视图文本能够正常显示。
字体原生加载流程中使用到的函数:
loadPreinstalledSystemFontMap函数,用于触发系统原生字体的加载流程,其内部可以调用以下四个函数:getSystemPreinstalledFontConfig()函数、buildSystemFallback()函数、buildSystemTypefaces()函数和setSystemFontMap()函数。
getSystemPreinstalledFontConfig()函数,用于解析fonts.xml文件,该函数会解析fonts.xml文件中的`<family>`标签和`<alias>`标签,根据`<family>`标签和`<alias>`标签,创建FontConfig对象,其中,FontConfig对象包括:FontFamily对象和Alias对象。
buildSystemFallback()函数,用于根据getSystemPreinstalledFontConfig()函数所创建的FontConfig对象,创建Map<String,FontFamily[]>,其中,Map的key值是`<family>`标签的name,该函数会完成Native层FontFamily对象与Font对象的创建。
buildSystemTypefaces()函数,用于根据getSystemPreinstalledFontConfig()函数所创建的Alias对象和buildSystemFallback()函数所创建的Map<String,FontFamily[]>,创建Typeface对象,即Map<String,Typeface>,其中,Map的key值包括`<family>`标签的name和`<alias>`标签的name,原因在于`<family>`标签和`<alias>`标签存在映射关系,`<alias>`标签记录了字重的名称、字库来源、使用的字重值。
例如,`<alias name="sans-serif-thin"to="sans-serif"weight="200"/>`表示应用可以使用`android:fontFamily="sans-serif-thin"`作为200字重,这个字体取自于`<family name="sans-serif">`标签。
setSystemFontMap()函数,用于初始化`Map<String,Typeface>sSystemFontMap`与`Typeface[]sDefaults`,也就是,将Map<String,Typeface>中的Map直接赋值给sSystemFontMap,sSystemFontMap是一个非常重要的对象,里面包含了系统界面所使用的所有Typeface对象。界面通过传入`android:fontFamily`告知系统使用哪种字重,系统会在sSystemFontMap中直接取出相应字重的Typeface对象供界面使用。
字体切换流程中使用到的函数:
updatePersistentConfigurationWithAttribution函数,是字体切换触发的入口函数,用户切换字体样式或者调节字体粗细、字号时,该函数会被调用。
createFonts函数,用于创建新的Font对象。
updateFont函数,用于替换FontFamily对象中的Font对象,内部会调用三个本地方法接口,将流程调入到Native层,将Native层FontFamily对象的Font对象进行替换。
nResetFont函数,属于Native接口函数,用于将当前Native层FontFamily对象的Font对象进行删除。
nVAddFont函数,属于Native接口函数,用于将新Font对象添加到FontFamily对象中。
nRefreshCoverage函数,属于Native接口函数,用于重新触发底层渲染。
二、应用场景
在电子设备中,字体在系统界面和应用界面等界面中的使用极为重要,其中,字体的样式、粗细和视觉尺寸都是字体的核心属性,对于界面上视图文本的呈现具有至关重要的作用。目前,用户希望可以切换电子设备系统的字体,获得更丰富的视觉体验。
三、相关技术与本申请实施例的区别
相关技术中,只能实现字体样式和字体粗细切换,无法实现字体的视觉尺寸切换,在实现字体样式和字体粗细切换时,采用的方案是更新Typeface对象,每次切换字体时需要创建新的Typeface对象并替换,在JAVA层去替换Typeface对象,这种方案会造成系统内存波动,消耗大量系统内存,由于每次创建Typeface对象都会申请较多的系统内存,Typeface对象创建的频率又非常高,如果用户频繁切换字体会导致系统内存溢出,后台进程频繁被杀,系统操作卡顿,导致电子设备无法正常工作。
本申请实施例中,在fonts.xml文件中除了定义每个family拥有不同的字库文件路径信息和字体粗细档位之外,还定义每个family拥有不同的视觉尺寸档位,为每一个档位定义alias标签,使得不仅能实现字体样式和字体粗细切换,还能实现字体的视觉尺寸切换。在实现字体样式、字体粗细和字体视觉尺寸切换时,采用的方案是更新Font对象,通过当前使用字体的Typeface对象反向查找到与之对应的FontFamily对象,然后在Native层将该FontFamily对象中的Font对象替换为将要切换字体的Font对象,将Java层与Native层完全打通,由于每次创建新的Font对象只需申请较少的系统内存,因此能够降低系统字体切换所消耗的内存量,确保电子设备的正常工作。
接下来对本申请实施例提供的字体切换方法进行详细地说明。
需要说明的是,本申请实施例提供的字体切换方法适用于电子设备,在实际应用中,该电子设备可以包括:智能手机、平板电脑、个人数字助理等移动终端,本申请实施例对此不作限定。
图3是本申请实施例提供的一种字体切换方法的流程图之一,如图3所示,该方法可以包括以下步骤:步骤301、步骤302、步骤303和步骤304;
在步骤301中,响应于字体切换指令,根据系统字体配置文件中字体与字体族的映射关系,查找第一字体对应的第一字体族文件;其中,字体切换指令用于指示将系统字体从第一字体切换为第二字体,第一字体族文件中包含用于绘制第一字体的第一字型文件。
本申请实施例中,为了便于理解和描述,在后续方案中,以“第一Typeface对象”作为“第一字体”进行描述、以“第一FontFamily对象”作为“第一字体族文件”进行描述,以“第一Font对象”作为“第一字型文件”进行描述,以“第二Font对象”作为“第二字型文件”进行描述。
本申请实施例中,系统字体配置文件中字体与字体族的映射关系,指的是fonts.xml文件中记录的Typeface对象与FontFamily对象之间的映射关系,该映射关系可以通过以下函数:getSystemPreinstalledFontConfig()函数、buildSystemFallback()函数、buildSystemTypefaces()函数和setSystemFontMap()函数等,解析得到。
本申请实施例中,第一字体为系统当前使用的字体,第二字体为用户期望的字体,可以通过fonts.xml文件中记录的Typeface对象与FontFamily对象之间的映射关系,查找到第一Typeface对象对应的第一FontFamily对象;其中,第一FontFamily对象中包含用于绘制第一Typeface对象的第一Font对象。
在一些实施例中,每个字型文件中可以包括:字库文件的路径信息和字体可变轴参数,其中,每个字体可变轴参数包括:字体粗细值和视觉尺寸值中的至少之一;一个字体样式对应于一个字库文件。
本申请实施例中,字库文件的路径信息用于指示一个字体样式的字库文件,字体可变轴参数中的字体粗细值用于指示一个字体粗细程度,字体可变轴参数中的视觉尺寸值用于指示一个字体视觉尺寸。
本申请实施例中,第一字体文件中包括:系统当前字体的字库文件的路径信息和字体可变轴参数;第二字体文件中包括:用户期望切换的字体的字库文件的路径信息和字体可变轴参数。
本申请实施例中,可以通过更改字型文件中的字库文件的路径信息,来实现字体的样式切换;可以通过更改字型文件中的字体粗细值,来实现字体的粗细切换;可以通过更改字型文件中的视觉尺寸值,来实现字体的视觉尺寸切换。
可见,本申请实施例中,每个字型文件中可以包含字体的样式、粗细程度和视觉尺寸等多个维度的参数,使得通过更改字型文件中的以上参数,无需修改代码,就可以实现字体的切换,灵活性较高。
在一些实施例中,系统字体配置文件中包含多个字体族标签和多个别名标签;每个字体族标签下包含多个字型标签,每个字型标签下包含字库文件的路径信息和字体可变轴标签,每个字体可变轴标签下包含字体可变轴参数,别名标签用于标识字体可变轴参数。
本申请实施例,fonts.xml文件中可以穷举所有字体粗细与视觉尺寸的排列组合,这样解析生成的Typeface对象包含了所有的字体粗细与视觉尺寸的组合,界面在设置字体时,可以先根据当前的字号来匹配所需的视觉尺寸值,之后根据所需的视觉尺寸值和所需的字体粗细值,匹配最终所需的Typeface对象,从而实现字体视觉尺寸的切换效果。
例如,fonts.xml文件中与字体视觉尺寸相关的FontFamily对象一共有13种,视觉尺寸可变轴的值分别对应10~22;每一个FontFamily对象中包含了8种字体粗细的Typeface对象,字体粗细可变轴的值分别对应100~800。
可见,本申请实施例中,在fonts.xml文件中除了定义每个family拥有不同的字库文件路径信息和字体粗细档位之外,还定义每个family拥有不同的视觉尺寸档位,为每一个档位定义alias标签,使得不仅能实现字体样式和粗细切换,还能实现字体的视觉尺寸切换。此外,通过将视觉尺寸档位和alias定义在fonts.xml文件中,可以方便后期维护和修改,后期如果需要增加新的字体可变特性,只需要修改fonts.xml文件即可,无需修改应用代码,提升了应用的可维护性。
本申请实施例中,字体切换指令可以由用户通过操作系统界面上的字体切换控件触发,例如,系统的设置界面上包括以下字体切换控件:字体样式切换控件、字体粗细切换控件和字体字号切换控件,用户可以通过操作字体样式切换控件来切换字体的样式,用户可以通过操作字体粗细切换控件来切换字体的粗细值,用户可以通过操作字体字号切换控件来切换字体的视觉尺寸。或者,也可以字体切换指令可以由用户通过语音指令触发。
在一个例子中,系统当前使用的字体的样式为楷体,用户想切换到宋体这一字体样式,也就是,第一字体的样式为楷体,第二字体的样式为宋体。
在一个例子中,系统当前使用的字体的样式为楷体且字体粗细为适中Medium,用户想切换到淡体Thin这一字体粗细,也就是,第一字体的样式为楷体且字体粗细为适中Medium,第二字体的样式为楷体且字体粗细为淡体Thin。
在一个例子中,系统当前使用的字体的样式为楷体且字号为小四,用户想切换字号到三号,也就是,第一字体的样式为楷体且视觉尺寸为字号小四所映射的视觉尺寸,第二字体的样式为楷体且视觉尺寸为字号三号所映射的视觉尺寸。
在步骤302中,创建用于绘制第二字体的第二字型文件。
本申请实施例中,字体切换指令中可以携带第二字体的字体特征参数,根据该字体特征参数和已有的createFonts函数,创建用于绘制第二字体的第二Font对象。其中,在切换字体样式时,会创建带有新字库路径的第二Font对象;在切换字体粗细时,会创建带有新的字体粗细值的第二Font对象;在切换字体的字号时,会创建带有用户调节字号值所映射的视觉尺寸值的第二Font对象。
在一些实施例中,在用户切换系统字体的样式的情况下,第一字体的字体样式与第二字体的字体样式不相同;字体切换指令中携带第二字体的样式标识;相应地,上述步骤302可以包括以下步骤:步骤3021和步骤3022;
在步骤3021中,根据字体切换指令中携带的第二字体的样式标识,确定第二字体对应的字库文件的路径信息。
在步骤3022中,根据第二字体对应的字库文件的路径信息,创建用于绘制第二字体的第二字型文件。
本申请实施例中,对于字体样式切换场景,可以提供字体样式切换控件,用户可以通过操作字体样式切换控件,触发字体切换指令,该字体切换指令中携带第二字体的样式标识。
本申请实施例中,可以从字体切换指令中获取第二字体的样式标识,根据第二字体的样式标识确定对应的字库文件的路径信息,创建包含第二字体对应的字库文件的路径信息和字体可变轴参数的第二Font对象,其中,第二Font对象与第一Font对象的区别在于字库文件的路径信息是不相同的,两者的可变轴参数可以是相同的。
可见,本申请实施例中,在切换字体样式时,可以根据字体切换指令中携带的第二字体的样式标识,创建用于绘制第二字体的第二字型文件,由于获取样式标识和字库文件路径比较简单,因此创建第二字型文件不会占用过多的系统资源,字体样式切换成本较低。
在一些实施例中,在用户切换系统字体的粗细的情况下,第一字体的字体粗细值与第二字体的字体粗细值不相同;字体切换指令中携带第二字体的粗细调节值;相应地,上述步骤302可以包括以下步骤:步骤3023和步骤3024;
在步骤3023中,根据字体切换指令中携带的第二字体的粗细调节值和基准粗细值,确定第二字体对应的字体粗细值。
在步骤3024中,根据第二字体对应的字体粗细值,创建用于绘制第二字体的第二字型文件。
本申请实施例中,对于字体粗细切换场景,可以提供字体粗细切换控件,例如,可以左右滑动的字体粗细滑杆控件,用户可以通过操作字体粗细切换控件,触发字体切换指令,该字体切换指令中携带第二字体的粗细调节值。
本申请实施例中,可以从字体切换指令中获取第二字体的粗细调节值,粗细调节值为一个缩放倍数值,由于一个字体的字重通常包含多个档位,例如包含档位100~800,因此可以在字体粗细基准档位的基础上,将档位100~800的基准粗细值乘以第二字体的粗细调节值,得到第二字体的字体粗细值,创建包含第二字体的字体粗细值、第二字体对应的字库路径信息和视觉尺寸值的第二Font对象,其中,第二Font对象与第一Font对象的区别在于字体粗细的可变轴参数不同,两者的字库路径信息和视觉尺寸值可以相同。
在本申请提供的一些实施例中,在用户切换系统字体的字号的情况下,第一字体的字号值与第二字体的字号值不相同;字体切换指令中携带第二字体的字号值;相应地,上述步骤302可以包括以下步骤:步骤3025和步骤3026;
在步骤3025中,根据字体切换指令中携带的第二字体的字号值、以及字号值与视觉尺寸值之间的映射关系,确定第二字体对应的视觉尺寸值。
在步骤3026中,根据第二字体对应的视觉尺寸值,创建用于绘制第二字体的第二字型文件。
本申请实施例中,对于字体视觉尺寸切换场景,字体视觉尺寸值没有专门的调节控件,用户无法像调节字体样式和字体粗细那样,通过显式的控件,来直接地调整字体视觉尺寸。字体视觉尺寸值与字号相关,可以提供字体字号切换控件,用户通过字体粗细切换控件,调节字号时,字体视觉尺寸值会随着字号的变化而变化。
本申请实施例中,字体的视觉尺寸和字体粗细互不影响,视觉尺寸也是属于可变轴参数中的一个,可以从字体切换指令中获取第二字体的字号值,由于字号与视觉尺寸之间存在映射关系,因此可以根据第二字体的字号值,查找到对应的视觉尺寸值,创建包含该视觉尺寸值、第二字体对应的字库路径信息和字体粗细值的第二Font对象,其中,第二Font对象与第一Font对象的区别在于字体视觉尺寸的可变轴参数不同,两者的字库路径信息和字体粗细值可以相同。
在步骤303中,将第一字体族文件中第一字型文件替换为第二字型文件。
本申请实施例中,可以调用updateFont函数、nResetFont函数和nVAddFont函数,将第一FontFamily对象中的第一Font对象替换为第二Font对象。
在步骤304中,响应于用户打开界面的操作,基于第一字体族文件中的第二字型文件,对界面上的视图文本进行字体渲染。
本申请实施例中,界面可以为系统界面,也可以为应用程序的界面。
本申请实施例中,可以调用nRefreshCoverage函数,基于第一FontFamily对象中的第二Font对象,对界面上的视图文本进行字体渲染,从而实现该界面上字体的显示。
由上述实施例可见,该实施例中,响应于字体切换指令,根据系统字体配置文件中字体与字体族的映射关系,查找第一字体对应的第一字体族文件;字体切换指令用于指示将系统字体从第一字体切换为第二字体,第一字体族文件中包含用于绘制第一字体的第一字型文件;创建用于绘制第二字体的第二字型文件;将第一字体族文件中第一字型文件替换为第二字型文件;响应于用户打开界面的操作,基于第一字体族文件中的第二字型文件,对界面上的视图文本进行字体渲染。可见,本申请实施例中,在用户切换系统的字体时,可以通过更新字体的字型文件的方式,来实现界面上字体的切换,由于创建字型文件占用较少的系统内存,因此能够降低系统字体切换所消耗的内存量,确保电子设备的正常工作。
图4是本申请实施例提供的一种字体切换方法的流程图之二,本申请实施例中,从操作系统架构的角度,描述字体切换流程,相应地,如图4所示,该方法可以包括以下步骤:步骤401、步骤402、步骤403和步骤404;
在步骤401中,响应于字体切换指令,根据系统字体配置文件中字体与字体族的映射关系,查找第一字体对应的系统运行库层的第一字体族文件。
本申请实施例中,由于字体渲染是在Native层进行的,因此根据系统字体配置文件中Typeface对象与FontFamily对象的映射关系,查找第一Typeface对象对应的Native层的第一FontFamily对象。
本申请实施例中,切换系统界面的字体与切换应用界面的字体,区别在于字体切换指令的触发方式不同,当切换系统界面的字体时,字体切换指令通过updatePersistentConfigurationWithAttribution函数提供的入口触发。当切换应用界面的字体时,字体切换指令通过handleConfigurationChanged函数提供的入口触发。在触发字体切换指令之后的字体切换流程是相同,都可以复用步骤402~步骤404。
在步骤402中,在应用框架层,创建用于绘制第二字体的第二字型文件,并将第二字型文件由应用框架层传递到系统运行库层。
本申请实施例中,在JAVA层,可以通过调用createFonts函数,创建用于绘制第二字体的第二Font对象,并通过调用updateFont函数,将Font对象由JAVA层传递到Native层。
在步骤403中,在系统运行库层,将第一字体族文件中的第一字型文件删除,并将第二字型文件添加到第一字体族文件中。
本申请实施例中,在Native层,通过调用nResetFont函数,将FontFamily对象中的第一Font对象删除,并通过调用nVAddFont函数,将第二Font对象添加到第一FontFamily对象中。
在步骤404中,响应于用户打开界面的操作,在系统运行库层,基于第一字体族文件中的第二字型文件,对界面上的视图文本进行字体渲染。
本申请实施例中,响应于用户打开界面的操作,在Native层,基于第一FontFamily对象中的第二Font对象,以及调用nRefreshCoverage函数,触发对界面上的视图文本进行字体渲染,从而实现界面上字体的切换。
可见,区别于目前在实现字体切换时,采用的方案是更新Typeface对象,只在JAVA层去替换Typeface对象,每次切换字体时需要构建新的Typefac对象并替换,由于每次构建Typeface对象都会申请额外的内存,Typeface对象构建的频率又非常高,因此如果用户频繁切换字体会导致系统内存波动,消耗大量系统内存,致使系统内存溢出,后台进程频繁被杀,系统操作卡顿。本申请实施例中,采用的方案是更新Font对象,将JAVA层与Native层完全打通,每次构建新的Font对象不会占用额外内存,底层会复用Font对象,充分利用了系统内存,避免了内存波动。
本申请实施例提供的字体切换方法,执行主体可以为字体切换装置。本申请实施例中以字体切换装置执行字体切换方法为例,说明本申请实施例提供的字体切换装置。
图5是本申请的一些实施例提供的一种字体切换装置的结构框图,如图5所示,字体切换装置500,可以包括:查找模块501、创建模块502、替换模块503和渲染模块504;
查找模块501,用于响应于字体切换指令,根据系统字体配置文件中字体与字体族的映射关系,查找第一字体对应的第一字体族文件;所述字体切换指令用于指示将系统字体从所述第一字体切换为第二字体,所述第一字体族文件中包含用于绘制所述第一字体的第一字型文件;
创建模块502,用于创建用于绘制所述第二字体的第二字型文件;
替换模块503,用于将所述第一字体族文件中所述第一字型文件替换为所述第二字型文件;
渲染模块504,用于响应于用户打开界面的操作,基于所述第一字体族文件中的所述第二字型文件,对所述界面上的视图文本进行字体渲染。
由上述实施例可见,该实施例中,响应于字体切换指令,根据系统字体配置文件中字体与字体族的映射关系,查找第一字体对应的第一字体族文件;字体切换指令用于指示将系统字体从第一字体切换为第二字体,第一字体族文件中包含用于绘制第一字体的第一字型文件;创建用于绘制第二字体的第二字型文件;将第一字体族文件中第一字型文件替换为第二字型文件;响应于用户打开界面的操作,基于第一字体族文件中的第二字型文件,对界面上的视图文本进行字体渲染。可见,本申请实施例中,在用户切换系统的字体时,可以通过更新字体的字型文件的方式,来实现界面上字体的切换,由于创建字型文件占用较少的系统内存,因此能够降低系统字体切换所消耗的内存量,确保电子设备的正常工作。
可选地,作为一个实施例,所述查找模块501,可以包括:
查找子模块,用于响应于字体切换指令,根据系统字体配置文件中字体与字体族的映射关系,查找第一字体对应的系统运行库层的第一字体族文件;
所述创建模块502,可以包括:
第一创建子模块,用于在应用框架层,创建用于绘制所述第二字体的第二字型文件,并将所述第二字型文件由所述应用框架层传递到所述系统运行库层;
所述替换模块503,可以包括:
替换子模块,用于在所述系统运行库层,将所述第一字体族文件中的所述第一字型文件删除,并将所述第二字型文件添加到所述第一字体族文件中。
可选地,作为一个实施例,每个字型文件中包括:字库文件的路径信息和字体可变轴参数,所述字体可变轴参数包括字体粗细值和视觉尺寸值中的至少之一;一个字体样式对应于一个字库文件。
可选地,作为一个实施例,所述第一字体的字体样式与所述第二字体的字体样式不相同;所述字体切换指令中携带所述第二字体的样式标识;
所述创建模块502,可以包括:
第一确定子模块,用于根据所述字体切换指令中携带的所述第二字体的样式标识,确定所述第二字体对应的字库文件的路径信息;
第二创建子模块,用于根据所述第二字体对应的字库文件的路径信息,创建用于绘制所述第二字体的第二字型文件。
可选地,作为一个实施例,所述第一字体的字体粗细值与所述第二字体的字体粗细值不相同;所述字体切换指令中携带所述第二字体的粗细调节值;
所述创建模块502,可以包括:
第二确定子模块,用于根据所述字体切换指令中携带的第二字体的粗细调节值和基准粗细值,确定所述第二字体对应的字体粗细值;
第三创建子模块,用于根据所述第二字体对应的字体粗细值,创建用于绘制所述第二字体的第二字型文件。
可选地,作为一个实施例,所述第一字体的字号值与所述第二字体的字号值不相同;所述字体切换指令中携带所述第二字体的字号值;
所述创建模块502,可以包括:
第三确定子模块,用于根据所述字体切换指令中携带的第二字体的字号值、以及字号值与视觉尺寸值之间的映射关系,确定所述第二字体对应的视觉尺寸值;
第四创建子模块,用于根据所述第二字体对应的视觉尺寸值,创建用于绘制所述第二字体的第二字型文件。
可选地,作为一个实施例,所述系统字体配置文件中包含多个字体族标签和多个别名标签;
所述字体族标签下包含多个字型标签,所述字型标签下包含字库文件的路径信息和字体可变轴标签,所述字体可变轴标签下包含字体可变轴参数,所述别名标签用于标识所述字体可变轴参数。
本申请实施例中的字体切换装置可以是独立工作的电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性的,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(Mobile Internet Device,MID)、增强现实(Augmented Reality,AR)/虚拟现实(Virtual Reality,VR)设备、机器人、可穿戴设备、超级移动个人计算机(Ultra-MobilePersonal Computer,UMPC)、上网本、或者个人数字助理(Personal Digital Assistant,PDA)等,还可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(Personal Computer,PC)、电视机(Television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的字体切换装置可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为IOS操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的字体切换装置能够实现图3或图4所示方法实施例实现的各个过程,为避免重复,这里不再赘述。
可选地,如图6所示,本申请实施例还提供了一种电子设备600,包括处理器601和存储器602,存储器602上存储有可在所述处理器601上运行的程序或指令,该程序或指令被处理器601执行时实现上述字体切换方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。
图7是实现本申请各个实施例的一种电子设备的硬件结构示意图。
该电子设备700包括但不限于:射频单元701、网络模块702、音频输出单元703、输入单元704、传感器705、显示单元706、用户输入单元707、接口单元708、存储器709以及处理器710等部件。
本领域技术人员可以理解,电子设备700还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器710逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图7中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
处理器710,用于响应于字体切换指令,根据系统字体配置文件中字体与字体族的映射关系,查找第一字体对应的第一字体族文件;所述字体切换指令用于指示将系统字体从所述第一字体切换为第二字体,所述第一字体族文件中包含用于绘制所述第一字体的第一字型文件;创建用于绘制所述第二字体的第二字型文件;将所述第一字体族文件中所述第一字型文件替换为所述第二字型文件;响应于用户打开界面的操作,基于所述第一字体族文件中的所述第二字型文件,对所述界面上的视图文本进行字体渲染。
可见,本申请实施例中,在用户切换系统的字体时,可以通过更新字体的字型文件的方式,来实现界面上字体的切换,由于创建字型文件占用较少的系统内存,因此能够降低系统字体切换所消耗的内存量,确保电子设备的正常工作。
可选地,作为一个实施例,处理器710,还用于响应于字体切换指令,根据系统字体配置文件中字体与字体族的映射关系,查找第一字体对应的系统运行库层的第一字体族文件;在应用框架层,创建用于绘制所述第二字体的第二字型文件,并将所述第二字型文件由所述应用框架层传递到所述系统运行库层;在所述系统运行库层,将所述第一字体族文件中的所述第一字型文件删除,并将所述第二字型文件添加到所述第一字体族文件中。
可选地,作为一个实施例,每个字型文件中包括:字库文件的路径信息和字体可变轴参数,所述字体可变轴参数包括字体粗细值和视觉尺寸值中的至少之一;一个字体样式对应于一个字库文件。
可选地,作为一个实施例,所述第一字体的字体样式与所述第二字体的字体样式不相同;所述字体切换指令中携带所述第二字体的样式标识;
处理器710,还用于根据所述字体切换指令中携带的所述第二字体的样式标识,确定所述第二字体对应的字库文件的路径信息;根据所述第二字体对应的字库文件的路径信息,创建用于绘制所述第二字体的第二字型文件。
可选地,作为一个实施例,所述第一字体的字体粗细值与所述第二字体的字体粗细值不相同;所述字体切换指令中携带所述第二字体的粗细调节值;
处理器710,还用于根据所述字体切换指令中携带的第二字体的粗细调节值和基准粗细值,确定所述第二字体对应的字体粗细值;根据所述第二字体对应的字体粗细值,创建用于绘制所述第二字体的第二字型文件。
可选地,作为一个实施例,所述第一字体的字号值与所述第二字体的字号值不相同;所述字体切换指令中携带所述第二字体的字号值;
处理器710,还用于根据所述字体切换指令中携带的第二字体的字号值、以及字号值与视觉尺寸值之间的映射关系,确定所述第二字体对应的视觉尺寸值;根据所述第二字体对应的视觉尺寸值,创建用于绘制所述第二字体的第二字型文件。
可选地,作为一个实施例,所述系统字体配置文件中包含多个字体族标签和多个别名标签;所述字体族标签下包含多个字型标签,所述字型标签下包含字库文件的路径信息和字体可变轴标签,所述字体可变轴标签下包含字体可变轴参数,所述别名标签用于标识所述字体可变轴参数。
应理解的是,本申请实施例中,输入单元704可以包括图形处理器(GraphicsProcessing Unit,GPU)7041和麦克风7042,图形处理器7041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元706可包括显示面板7061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板7061。用户输入单元707包括触控面板7071以及其他输入设备7072中的至少一种。触控面板7071,也称为触摸屏。触控面板7071可包括触摸检测装置和触摸控制器两个部分。其他输入设备7072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
存储器709可用于存储软件程序以及各种数据。存储器709可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器709可以包括易失性存储器或非易失性存储器,或者,存储器709可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请实施例中的存储器709包括但不限于这些和任意其它适合类型的存储器。
处理器710可包括一个或多个处理单元;可选的,处理器710集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器710中。
本申请实施例还提供了一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述字体切换方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
本申请实施例还提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述字体切换方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
本申请实施例还提供了一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述字体切换方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(例如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(例如可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (10)
1.一种字体切换方法,其特征在于,所述方法包括:
响应于字体切换指令,根据系统字体配置文件中字体与字体族的映射关系,查找第一字体对应的第一字体族文件;所述字体切换指令用于指示将系统字体从所述第一字体切换为第二字体,所述第一字体族文件中包含用于绘制所述第一字体的第一字型文件;
创建用于绘制所述第二字体的第二字型文件;
将所述第一字体族文件中所述第一字型文件替换为所述第二字型文件;
响应于用户打开界面的操作,基于所述第一字体族文件中的所述第二字型文件,对所述界面上的视图文本进行字体渲染。
2.根据权利要求1所述的方法,其特征在于,所述响应于字体切换指令,根据系统字体配置文件中字体与字体族的映射关系,查找第一字体对应的第一字体族文件,创建用于绘制所述第二字体的第二字型文件,将所述第一字体族文件中所述第一字型文件替换为所述第二字型文件,包括:
响应于字体切换指令,根据系统字体配置文件中字体与字体族的映射关系,查找第一字体对应的系统运行库层的第一字体族文件;
在应用框架层,创建用于绘制所述第二字体的第二字型文件,并将所述第二字型文件由所述应用框架层传递到所述系统运行库层;
在所述系统运行库层,将所述第一字体族文件中的所述第一字型文件删除,并将所述第二字型文件添加到所述第一字体族文件中。
3.根据权利要求1或2所述的方法,其特征在于,每个字型文件中包括:字库文件的路径信息和字体可变轴参数,所述字体可变轴参数包括字体粗细值和视觉尺寸值中的至少之一;一个字体样式对应于一个字库文件。
4.根据权利要求3所述的方法,其特征在于,所述第一字体的字体样式与所述第二字体的字体样式不相同;所述字体切换指令中携带所述第二字体的样式标识;
所述创建用于绘制所述第二字体的第二字型文件,包括:
根据所述字体切换指令中携带的所述第二字体的样式标识,确定所述第二字体对应的字库文件的路径信息;
根据所述第二字体对应的字库文件的路径信息,创建用于绘制所述第二字体的第二字型文件。
5.根据权利要求3所述的方法,其特征在于,所述第一字体的字体粗细值与所述第二字体的字体粗细值不相同;所述字体切换指令中携带所述第二字体的粗细调节值;
所述创建用于绘制所述第二字体的第二字型文件,包括:
根据所述字体切换指令中携带的第二字体的粗细调节值和基准粗细值,确定所述第二字体对应的字体粗细值;
根据所述第二字体对应的字体粗细值,创建用于绘制所述第二字体的第二字型文件。
6.根据权利要求3所述的方法,其特征在于,所述第一字体的字号值与所述第二字体的字号值不相同;所述字体切换指令中携带所述第二字体的字号值;
所述创建用于绘制所述第二字体的第二字型文件,包括:
根据所述字体切换指令中携带的第二字体的字号值、以及字号值与视觉尺寸值之间的映射关系,确定所述第二字体对应的视觉尺寸值;
根据所述第二字体对应的视觉尺寸值,创建用于绘制所述第二字体的第二字型文件。
7.根据权利要求3所述的方法,其特征在于,所述系统字体配置文件中包含多个字体族标签和多个别名标签;
所述字体族标签下包含多个字型标签,所述字型标签下包含字库文件的路径信息和字体可变轴标签,所述字体可变轴标签下包含字体可变轴参数,所述别名标签用于标识所述字体可变轴参数。
8.一种字体切换装置,其特征在于,所述装置包括:
查找模块,用于响应于字体切换指令,根据系统字体配置文件中字体与字体族的映射关系,查找第一字体对应的第一字体族文件;所述字体切换指令用于指示将系统字体从所述第一字体切换为第二字体,所述第一字体族文件中包含用于绘制所述第一字体的第一字型文件;
创建模块,用于创建用于绘制所述第二字体的第二字型文件;
替换模块,用于将所述第一字体族文件中所述第一字型文件替换为所述第二字型文件;
渲染模块,用于响应于用户打开界面的操作,基于所述第一字体族文件中的所述第二字型文件,对所述界面上的视图文本进行字体渲染。
9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1至7任一项所述的字体切换方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1至7任一项所述的字体切换方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311427234.XA CN117350248A (zh) | 2023-10-30 | 2023-10-30 | 字体切换方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311427234.XA CN117350248A (zh) | 2023-10-30 | 2023-10-30 | 字体切换方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117350248A true CN117350248A (zh) | 2024-01-05 |
Family
ID=89369115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311427234.XA Pending CN117350248A (zh) | 2023-10-30 | 2023-10-30 | 字体切换方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117350248A (zh) |
-
2023
- 2023-10-30 CN CN202311427234.XA patent/CN117350248A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110737840B (zh) | 语音控制方法及显示设备 | |
US7610561B2 (en) | Fine-grained control of z-order elements in a presentation | |
US20090077056A1 (en) | Customization of search results | |
DE202017104110U1 (de) | Bildsuchanfragevorhersagen durch eine Tastatur | |
EP3822828A2 (en) | Method, apparatus, device and storage medium for determining page theme and computer program product | |
WO2021008334A1 (zh) | 小程序的数据绑定方法、装置、设备及存储介质 | |
US11520473B2 (en) | Switch control for animations | |
US20110001753A1 (en) | Method, module, and device for displaying graphical information | |
CN112035877A (zh) | 信息隐藏方法、装置、电子设备及可读存储介质 | |
CN116483240A (zh) | 基于列表的空数据占位视图实现方法、装置及电子设备 | |
CN117350248A (zh) | 字体切换方法、装置、电子设备及存储介质 | |
CN112417345B (zh) | 渲染方法、装置、电子设备及存储介质 | |
CN115994517A (zh) | 信息处理方法、装置、存储介质、设备及程序产品 | |
CN115729544A (zh) | 桌面组件生成方法、装置、电子设备和可读存储介质 | |
CN113741743A (zh) | 一种显示方法及装置、设备、存储介质 | |
CN102111655B (zh) | 一种网络电视终端显示网络资源的方法及系统 | |
CN113641252B (zh) | 文本输入方法、装置及电子设备 | |
CN112613270B (zh) | 对目标文本进行样式推荐的方法、系统、设备及存储介质 | |
EP4213474A1 (en) | Advertisement display method and electronic device | |
CN115129198B (zh) | 一种数据获取方法、装置、电子设备及存储介质 | |
CN115438282B (zh) | 页面中元素的定位方法及装置 | |
US10831855B2 (en) | Adaptive images | |
CN114385153A (zh) | 界面编辑方法、编辑终端及计算机可读存储介质 | |
CN117389458A (zh) | 信息输入方法、装置和电子设备 | |
CN117850951A (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 |