Pdfium.Net.Free 一个免费的Pdfium的 .net包装器--创建字符子集
项目地址:
Pdfium.Net:https://github.com/1000374/Pdfium.Net
PdfiumViewer:https://github.com/1000374/PdfiumViewer
Pdfium.Net.Free 一个免费的Pdfium的 .net包装器--加载字体 
接上篇,怎么创建字符子集呢?获取字符集内的字形符号需要引用wpf下PresentationCore.dll,根据比对传入字符和字符集中的字形获取对应的字形字节,从而生成新的字符集,
如需要生成ttf文件,则直接byte[]保存成ttf即可
/// <summary>
/// create SubCharacterSet
/// </summary>
/// <param name="fontPath">font path</param>
/// <param name="sourceText"></param>
/// <returns></returns>
public static byte[] CreateSubSet(this string fontPath, string sourceText)
{
if (!File.Exists(fontPath))
throw new ArgumentException($"{fontPath} not find");
var glyphTypeface = new GlyphTypeface(new Uri(fontPath, UriKind.RelativeOrAbsolute));
var Index = new List<ushort>();
var sourceTextBytes = Encoding.Unicode.GetBytes(sourceText);
var sourceTextChars = Encoding.Unicode.GetChars(sourceTextBytes);
for (var charPos = 0; charPos <= (sourceTextChars.Length - 1); charPos++)
{
var sourceTextCharVal = (int)sourceTextChars[charPos];
var glyphIndex = glyphTypeface.CharacterToGlyphMap[sourceTextCharVal];
if (!Index.Contains(glyphIndex))
Index.Add(glyphIndex);
}
return glyphTypeface.ComputeSubset(Index);
}
Pdfium.Net.Free 一个免费的Pdfium的 .net包装器--创建字符子集的更多相关文章
- 一个免费的、跨平台的、开源音频编辑器Audacity
Audacity 是一个免费的开源程序,用于编辑音频录制.它可在多个平台(windows/linux)上运行.Audacity 基于 GUI,是一个具有多种选项的强大程序.它支持您录制各种类型的声音. ...
- Caf.CMS是一个免费的、 开源,功能齐全的CMS
Caf.CMS(疯狂蚂蚁CMS) 是一个免费的. 开源,功能全面的CMS(内容管理系统).定位CMS也有点狭义呢,因为Caf.CMS是基于国外SmartStore.NET 开源商城源码的基础上改造而成 ...
- 搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门
喜欢写Blog的人,会经历三个阶段. 第一阶段,刚接触Blog,觉得很新鲜,试着选择一个免费空间来写. 第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客. 第三阶段,觉得独立博客的管 ...
- 分享一个免费SSL证书申请网站,给网站开启https协议 | 张戈博客
这些天,由于公司的业务需求,接触到了ssl证书和https协议.博客前几篇文章也分享了在WEB服务器上安装SSL证书,为网站开启https协议的教程,感兴趣的童鞋可以前往查看相关文章: <Lin ...
- 一个免费的自动化跨平台测试JavaScript的工具——BrowserSwarm
BrowserSwarm是一个免费工具,能够自动化跨平台测试JavaScript.
- IETester是一个免费的Web浏览器调试工具
功能简介 IETester是一个免费的Web浏览器调试工具,可以模拟出不同的js引擎来帮助程序员设计效果统一的代码.IETester可以在独立的标签页中开启IE5.5.IE6.IE7以及最I新的IE8 ...
- 搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门[zz]
喜欢写Blog的人,会经历三个阶段. 第一阶段,刚接触Blog,觉得很新鲜,试着选择一个免费空间来写. 第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客. 第三阶段,觉得独立博客的管 ...
- 一个免费ss网站的数据爬取过程
一个免费ss网站的数据爬取过程 Apr 14, 2019 引言 爬虫整体概况 主要功能方法 绕过DDOS保护(Cloudflare) post中参数a,b,c的解析 post中参数a,b,c的解析 p ...
- 【ghost初级教程】 怎么搭建一个免费的ghost博客
ghost博客系统无疑是这个月最火热的话题之一,这个号称”只为博客“的系统,早在项目开始之初就受到了众人的关注.它使用了当前最火热node.js技术,10月14日发布了V0.3.3版本.江湖传言它将是 ...
- 搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门(转)
转自:http://www.ruanyifeng.com/blog/2012/08/blogging_with_jekyll.html 喜欢写Blog的人,会经历三个阶段. 第一阶段,刚接触Blog, ...
随机推荐
- POJ 1236 Network of Schools (连通图 - Garbow 算法)
POJ 1236 Network of Schools 校园网:给定N所学校和网络,目标是分发软件其他学校都可收到,求①所需最少分发学校数:②若任选学校都能收到,最低新增边数. 思路:同一个强连通 ...
- Deltix Round, Spring 2021 (open for everyone, rated, Div. 1 + Div. 2) (ABCE补题记录)
补题链接:Here 1523A. Game of Life 生命游戏定义 本题中改编为一维坐标上的生命游戏 即使 \(m(m\in[1,1e9])\) 的范围很大,但每次进化不会超过 \(n\) 次, ...
- L2-010. 排座位(种类并查集)
布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席. 输入格式: ...
- 绿色数字园区运维:一屏群集 3D 可视化智慧楼宇
前言 在"新基建"驱动的数字经济热潮下,智慧园区建设发展成为实现园区管理绿色化.现代化.智慧化的核心抓手.通过利用云计算.物联网.大数据等新一代技术手段,充分聚合园区内各类资源,全 ...
- 广搜 广搜 poj 3984
***求最短路径,然后再输出路径, BFS+路径输出*** #include <iostream> #include <cstdio> #include <cstring ...
- 信息收集-CDN绕过
什么是CDN加速? CDN 的全称是 Content Delivery Network,即内容分发网络.CDN 是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器, 通过中心平台的负载 ...
- [译] kubernetes:kube-scheduler 调度器代码结构概述
本文翻译自 https://github.com/kubernetes/community/blob/master/contributors/devel/sig-scheduling/scheduli ...
- docker 原理之 namespace (上)
1. namespace 资源隔离 namespace 是内核实现的一种资源隔离技术,docker 使用 namespace 实现了资源隔离. Liunx 内核提供 6 种 namespace 隔离的 ...
- 基于python的药店药品信息管理系统-毕业设计-课程设计
基于python+django+vue.js开发的药店信息管理系统 功能介绍 平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发. 功能包括:药品管理.分类 ...
- golang将字符串进行md5加密
最近写项目要把登录密码进行md5加密保存,在golang里面的写法略有不同,再次记录一下. package main import ( "crypto/md5" "enc ...