Merge remote-tracking branch 'LCTT/master'

This commit is contained in:
Xingyu Wang 2020-08-24 11:27:23 +08:00
commit 3f84aa026d
6 changed files with 243 additions and 175 deletions

View File

@ -1,53 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (IBM details next-gen POWER10 processor)
[#]: via: (https://www.networkworld.com/article/3571415/ibm-details-next-gen-power10-processor.html)
[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/)
IBM details next-gen POWER10 processor
======
New CPU is optimized for enterprise hybrid cloud and AI inferencing, and it features a new technology for creating petabyte-scale memory clusters.
IBM
IBM on Monday took the wraps off its latest POWER RISC CPU family, optimized for enterprise hybrid-cloud computing and artificial intelligence (AI) inferencing, along with a number of other improvements.
Power is the last of the Unix processors from the 1990s, when Sun Microsystems, HP, SGI, and IBM all had competing Unixes and RISC processors to go with them. Unix gave way to Linux and RISC gave way to x86, but IBM holds on.
This is IBM's first 7-nanometer processor, and IBM claims it will deliver an up-to-three-times improvement in capacity and processor energy efficiency within the same power envelope as its POWER9 predecessor. The processor comes in a 15-core design (actually 16-cores but one is not used) and allows for single or dual chip models, so IBM can put two processors in the same form factor. Each core can have up to eight threads, and each socket supports up to 4TB of memory.
More interesting is a new memory clustering technology called Memory Inception. This form of clustering allows the system to view memory in another physical server as though it were its own. So instead of putting a lot of memory in each box, servers can literally borrow from their neighbors when there is a spike in demand for memory. Or admins can set up one big server with lots of memory in the middle of a cluster and surround it with low-memory servers that can borrow memory as needed from the high capacity server.
All of this is done with a latency of 50 to 100 nanoseconds. "This has been a holy grail of the industry for a while now," said William Starke, a distinguished engineer with IBM, on a video conference in advance of the announcement. "Instead of putting a lot of memory in each box, when we have a spike demand for memory I can borrow from my neighbors."
POWER10 uses something called Open Memory Interfaces (OMI), so the server can use DDR4 now and be upgraded to DDR5 when it hits the market, and it can also use GDDR6 memory used in GPUs. In theory, POWER10 will come with 1TB/sec of memory bandwidth and 1TB/sec of SMP of bandwidth.
The POWER10 processor has quadruple the number of AES encryption engines per core compared to the POWER9. This enables several security enhancements. First, it means full memory encryption without degradation of performance, so no intruder can scan the contents of memory.
Second, it enables hardware and software security for containers to provide isolation. This is designed to address new security considerations associated with the higher density of containers. If a container were to be compromised, the POWER10 processor is designed to be able to prevent other containers in the same virtual machine from being affected by the same intrusion.
Finally, the POWER10 offers in-core AI business inferencing. It achieves this through on-chip support for bfloat16 for training as well as INT8 and INT4, which are commonly used in AI inferencing. This will allow transactional workloads to add AI inferencing in their apps. IBM says the AI inferencing in POWER10 is 20 times that of POWER9.
Not mentioned in the announcement is operating system support. POWER runs AIX, IBM's flavor of Unix, as well as Linux. That's not too surprising since the news is coming at Hot Chips, the annual semiconductor conference held every year at Stanford University. Hot Chips is focused on the latest chip advances, so software is usually left out.
IBM generally announces new POWER processors about a year in advance of release, so there is plenty of time for an AIX update.
Join the Network World communities on [Facebook][1] and [LinkedIn][2] to comment on topics that are top of mind.
--------------------------------------------------------------------------------
via: https://www.networkworld.com/article/3571415/ibm-details-next-gen-power10-processor.html
作者:[Andy Patrizio][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.networkworld.com/author/Andy-Patrizio/
[b]: https://github.com/lujun9972
[1]: https://www.facebook.com/NetworkWorld/
[2]: https://www.linkedin.com/company/network-world

View File

@ -0,0 +1,69 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Open organizations through the ages)
[#]: via: (https://opensource.com/open-organization/20/8/global-history-collaboration)
[#]: author: (Ron McFarland https://opensource.com/users/ron-mcfarland)
Open organizations through the ages
======
On a global timeline, extensive collaboration is still a relatively new
phenomenon. That could explain why we're still getting the hang of it.
![Alarm clocks with different time][1]
Consider the evolution of humankind. When we do, we will recognize that _having global discussions_ and _acting on global decisions_ is a relatively new phenomenon—only 100 years old, give or take a few years. We're still learning _how_ to make global decisions and execute on them successfully.
Yet our ability to improve those globally focused practices and skills is critical to our continued survival. And open principles will be the keys to helping us learn them—as they have been throughout history.
In the [first part of this series][2], I reviewed four factors one might use to assess globalization, and I explained how those factors relate specifically to [open organization principles][3]. Here, I'd like to present a chronology of how those principles have influenced certain developments that have made the world feel more connected and have made _personal_ or _regional_ issues into _global_ issues.
This work draws on research by [Jeffrey D. Sachs][4], author of the book [_The Ages of Globalization_][5]. Sachs examines globalization from the genesis of humankind and argues that globalization has improved life and prosperity through the ages. He organizes human history into seven "ages," and examines the governance structure predominant in each. That structure determines how populations interact with each other (another way of assessing how socially inclusive they are). For Sachs, that inclusiveness is directly related to per capita GDP, or productivity per person. That productivity is where prosperity (or survival) is determined.
So let's look at the growth of globalization through the ages (I'll use Sachs' categorizations) and see where open organization principles began to take hold in early civilizations. In this piece, I'll discuss historical periods up to the beginning of the Industrial Revolution (the early 1800s).
### The Paleolithic Age (70,00010,000 BCE): The hunter/gatherer setting
According to Sachs, the history of globalization really begins at the dawn of humankind. And open organization principles are evident even then—though only in tight-knit groups of 25 to 30 members, called "bands," each very similar to "bottom-up" business teams today. Such bands resisted hierarchical organization, eventually connecting with other bands to form "clans" of around 150 people, then "mega-bands" of around 500 people, and finally to "tribes" of around 1,500 people. But these groups never let go of that "band" concept (we can observe this in ancient ruins around the globe). Bands cooperated, but interactions were relatively weak (sometimes even warlike, as bands fought to protect territory). As bands' means of survival was primarily hunting and gathering, they lived a largely nomadic lifestyle.
### The Neolithic Age (10,0003,000 BCE): The ranching/farming setting
The advent of farming and ranching, Sachs says, marked this period of globalization. During that period, major segments of the human population started establishing permanent settlements, leading to decline in the hunter and gatherer nomadic lifestyle, as agricultural developments allowed for more productivity per unit area. People could establish larger villages. With new agricultural techniques, ten individuals could survive on one square kilometer of land (compared to only one person per square kilometer of hunter/gatherers). Therefore, people were not forced to migrate to new areas to survive. Communities grew larger, and these larger communities set in motion new technical discoveries in metallurgy, the arts, numeric record keeping, ceramics, and even a writing system to record technical breakthroughs. In short, _sharing_ and _collaboration_ became keys to expanding know-how, evidence of open organization principles even tens of thousands of years ago.
Having global discussions and acting on global decisions is a relatively new phenomenon—only 100 years old, give or take a few years.
### The Equestrian Age (3,0001,000 BCE): The land travel by horse setting
During the Neolithic Age, communities began connecting with each other using horses for transportation, giving rise to another era of globalization—what Sachs calls The Equestrian Age. Domestication of animals took place almost exclusively in Eurasia and North Africa, including the use of donkeys, cattle, camels and other animals (not just horses). That domestication was by far the most important factor in the economic development and globalization in this age. Animal husbandry was a major influence on farming, mining, manufacturing, transportation, communications, warfare tactics, and governance. As greater long-distance movement was now possible (routes were formed to and from the east and west), whole civilizations began to form. The Egyptians introduced a system of writing and documentation, as well as public administration, which unified dynasties within the region. This led to advances in scientific fields, including mathematics, astronomy, engineering, metallurgy, and medicine.
### The Classical Age (1,000 BCE1500 CE): An information, documentation, learning setting
According to Sachs, this era of globalization involves the globalization of politics—namely conquering wide regions and creating empires. This includes the empires of Assyria, Persia, Greece, Rome, India, China and later the Ottoman and Mongol empires. This age saw the spread of ideas, technology, institutional concepts, and infrastructural development on a continental scale. As a result, larger communities were developed, and there was a greater and broader level of collaboration, interaction, transparency, adaptability and inclusivity than in the past. Through interaction between empires, better methods of growing food, raising farm animals, transporting goods and fighting wars spread around the globe. Much of this knowledge spread through thousands of books published, distributed, and taught (formal, community schooling began in this era, as did several documentation practices). Global trade improved with the establishment of a navy to police and protect travel routes. Simply put, this was a setting of multinational governance with ever expanding collaboration, inclusivity, and larger community development.
### The Ocean Age (15001800 CE): The long-distance sea travel and exploration setting
During this period of globalization, Sachs says, the Old World and the New World, isolated from each other since the Paleolithic Age, finally united through ever faster ocean-going vessels, leading to greater two-way exchange. Plants, animals—and, unfortunately, diseases and pathogens—trafficked between them. Travel from Europe to Asia (via the Cape of Good Hope) increased during this era. This age saw the rise of global capitalism, with the establishment of global-scale economic organizations, like the British East India Company (chartered in 1600) and the Dutch East India Company (chartered in 1602). Each supplied global markets with goods from remote areas. But while global trade produced great prosperity during this era, in many regions it also led to great cruelty (the exploitation of indigenous peoples, for example).
By the 1800s, communities were interacting on a scale more global than it had ever been, and open organization principles were more influential than ever before. And yet this era still saw a significant deficit of overall inclusivity and collaboration. We should note that this era of globalization is relatively _recent_ in history when viewed on the timescale Sachs outlines in _The Ages of Globalization_.
How did we get from there to the current age? In the next article, I'll explore those developments.
--------------------------------------------------------------------------------
via: https://opensource.com/open-organization/20/8/global-history-collaboration
作者:[Ron McFarland][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/ron-mcfarland
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/clocks_time.png?itok=_ID09GDk (Alarm clocks with different time)
[2]: https://opensource.com/open-organization/20/7/globalization-history-open
[3]: https://opensource.com/open-organization/resources/open-org-definition
[4]: https://en.wikipedia.org/wiki/Jeffrey_Sachs
[5]: https://cup.columbia.edu/book/the-ages-of-globalization/9780231193740

View File

@ -1,121 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (An attempt to make a font look more handwritten)
[#]: via: (https://jvns.ca/blog/2020/08/08/handwritten-font/)
[#]: author: (Julia Evans https://jvns.ca/)
An attempt to make a font look more handwritten
======
Im actually not super happy with the results of this experiment, but I wanted to share it anyway because it was very easy and fun to play with fonts. And somebody asked me how to do it and I told her Id write a blog post about it :)
### background: the original handwritten font
Some background: I have a font of my handwriting that Ive been use in my zines for a couple of years. I made it using a delightful app called [iFontMaker][1]. They pitch themselves on their website as “You can create your handmade typeface in less than 5 minutes just with your fingers”. In my experience the 5 minutes” part is pretty accurate I might have spent more like 15 minutes. Im skeptical of the “just your fingers” claim I used an Apple Pencil, which has much better accuracy. But it is extremely easy to make a TTF font of your handwriting with the app and if you happen to already have an Apple Pencil and iPad I think its a fun way to spend $7.99.
Heres what my font looks like. The “CONNECT” text on the left is my actual handwriting, and the paragraph on the right is the font. There are actually 2 fonts theres a regular font and a handwritten “monospace” font. (which actually isnt monospace in practice, I havent figured out how to make a actual monospace font in iFontMaker)
![][2]
### the goal: have more character variation in the font
In the screenshot above, its pretty obvious that its a font and not actual handwriting. Its easiest to see this when you have two of the same letter next to each other, like in “HTTP.
So I thought it might be fun to use some OpenType features to somehow introduce a little more variation into this font, like maybe the two Ts could be different. I didnt know how to do this though!
### idea from Tristan Hume: use OpenType!
Then I was at !!Con 2020 in May (all the [talk recordings are here!][3]) and saw this talk by Tristan Hume about using OpenType to place commas in big numbers by using a special font. His talk and blog post are both great so here are a bunch of links the live demo is maybe the fastest way to see his results.
* a live demo: [Numderline Test][4]
* the blog post: [Commas in big numbers everywhere: An OpenType adventure][5]
* the talk: [!!Con 2020 - Using font shaping to put commas in big numbers EVERYWHERE!! by Tristan Hume][6]
* the github repo: <https://github.com/trishume/numderline/blob/master/patcher.py>
### the main idea: OpenType lets you replace characters based on context
I started out being extremely confused about what OpenType even is. I still dont know much, but I learned that you can write extremely simple OpenType rules to change how a font looks, and you dont even have to really understand anything about fonts.
Heres an example rule:
```
sub a' b by other_a;
```
What `sub a' b by other_a;` means is: If an `a` glyph is before a `b`, then replace the `a` with the glyph `other_a`.
So this means I can make `ab` appear different from `ac` in the font. Its not random the way handwriting is, but it does introduce a little bit of variation.
### OpenType reference documentation: awesome
The best documentation I found for OpenType was this [OpenType™ Feature File Specification][7] reference. There are a lot of examples of cool things you can do in there, like replace “ffi” with a ligature.
### how to apply these rules: `fonttools`
Adding new OpenType rules to a font is extremely easy. Theres a Python library called `fonttools`, and these 5 lines of code will apply a list of OpenType rules (in `rules.fea`) to the font file `input.ttf`.
```
from fontTools.ttLib import TTFont
from fontTools.feaLib.builder import addOpenTypeFeatures
ft_font = TTFont('input.ttf')
addOpenTypeFeatures(ft_font, 'rules.fea', tables=['GSUB'])
ft_font.save('output.ttf')
```
`fontTools` also provides a couple of command line tools called `ttx` and `fonttools`. `ttx` converts a TTF font into an XML file, which was useful to me because I wanted to rename some glyphs in my font but did not understand anything about fonts. So I just converted my font into an XML file, used `sed` to rename the glyphs, and then used `ttx` again to convert the XML file back into a `ttf`.
`fonttools merge` let me merge my 3 handwriting fonts into 1 so that I had all the glyphs I needed in 1 file.
### the code
I put my extremely hacky code for doing this in a repository called [font-mixer][8]. Its like 33 lines of code and I think its pretty straightforward. (its all in `run.sh` and `combine.py`)
### the results
Heres a small sample the old font and the new font. I dont think the new font “feels” that much more like handwriting theres a little more variation, but it still doesnt compare to actual handwritten text (at the bottom).
It feels a little uncanny valley to me, like its obviously still a font but its pretending to be something else.
![][9]
And heres a sample of the same text actually written by hand:
![][10]
Its possible that the results would be better if I was more careful about how I made the 2 other handwriting fonts I mixed the original font with.
### its cool that its so easy to add opentype rules!
Mostly what was delightful to me here is that its so easy to add OpenType rules to change how fonts work, like you can pretty easily make a font where the word “the” is always replaced with “teh” (typos all the time!).
I still dont know how to make a more realistic handwriting font though :). Im still using the old one (without the extra variations) and Im pretty happy with it.
--------------------------------------------------------------------------------
via: https://jvns.ca/blog/2020/08/08/handwritten-font/
作者:[Julia Evans][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://jvns.ca/
[b]: https://github.com/lujun9972
[1]: https://2ttf.com/
[2]: https://jvns.ca/images/font-sample-connect.png
[3]: http://bangbangcon.com/recordings.html
[4]: https://thume.ca/numderline/
[5]: https://blog.janestreet.com/commas-in-big-numbers-everywhere/
[6]: https://www.youtube.com/watch?v=Biqm9ndNyC8
[7]: https://adobe-type-tools.github.io/afdko/OpenTypeFeatureFileSpecification.html
[8]: https://github.com/jvns/font-mixer/
[9]: https://jvns.ca/images/font-mixer-comparison.png
[10]: https://jvns.ca/images/handwriting-sample.jpeg

View File

@ -1,5 +1,5 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )

View File

@ -0,0 +1,52 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (IBM details next-gen POWER10 processor)
[#]: via: (https://www.networkworld.com/article/3571415/ibm-details-next-gen-power10-processor.html)
[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/)
IBM 详细介绍了下一代 POWER10 处理器
======
新的 CPU 针对企业混合云和 AI 推理进行了优化,它采用了为 PB 级内存集群开发的新技术。
IBM 周一公布了最新的 POWER RISC CPU 系列,该系列针对企业混合云计算和人工智能 AI) 推理进行了优化,同时还进行了其他一些改进。
Power 是上世纪 90 年代最后一款 Unix 处理器,当时 Sun Microsystems、HP、SGI 和 IBM 都有用于竞争的 Unix 和 RISC 处理器与之配合。Unix 让位给了 LinuxRISC 让位给了 x86但 IBM 坚持了下来。
这是 IBM 的第一款 7 纳米处理器IBM 宣称它将在与前代 POWER9 相同的功率范围内,将容量和处理器能效提升最多三倍。该处理器采用 15 核设计(实际上是 16 核,但其中一个没有使用),并允许采用单芯片或双芯片型号,因此 IBM 可以在同一外形尺寸中放入两个处理器。每个核心最多可以有 8个 线程,每块 CPU 最多支持 4TB 的内存。
更有趣的是一种名为 Memory Inception 的新内存集群技术。这种形式的集群允许系统将另一台物理服务器中的内存当作自己的内存来看待。因此,服务器不需要在每个机箱中放很多内存,而是可以在内存需求激增的时候,从邻居那里借到内存。或者,管理员可以在集群的中间设置一台拥有大量内存的服务器,并在其周围设置一些低内存服务器,这些服务器可以根据需要从大内存服务器上借用内存。
所有这些都是在 50 到 100 纳秒的延迟下完成的。IBM 的杰出工程师 William Starke 在宣布前的视频会议上说:"这已经成为行业的圣杯了。与其在每个机箱里放很多内存,不如当我们对内存的需求激增时,我可以向邻居借。"
POWER10 使用的是一种叫做开放内存接口 (OMI)的东西,因此服务器现在可以使用 DDR4上市后可以升级到 DDR5它还可以使用 GPU 中使用的 GDDR6 内存。理论上POWER10 将具备 1TB/秒的内存带宽和 1TB/秒的 SMP 带宽。
与 POWER9 相比POWER10 处理器每个核心的 AES 加密引擎数量增加了四倍。这实现了多项安全增强功能。首先,这意味着在不降低性能的情况下进行全内存加密,因此入侵者无法扫描内存内容。
其次它可以为容器提供隔离的硬件和软件安全。这是为了解决高密度容器相关的安全考虑。如果一个容器被入侵POWER10 处理器的设计能够防止同一虚拟机中的其他容器受到同样的入侵影响。
最后POWER10 提供了核心内的 AI 业务推理。它通过片上支持用于训练的 bfloat16 以及 AI 推理中常用的 INT8 和 INT4 实现。这将允许事务性负载在应用中添加 AI 推理。IBM 表示POWER10 中的 AI 推理是 POWER9 的 20 倍。
公告中没有提到的是操作系统支持。POWER 运行 IBM 的 Unix 分支 AIX以及 Linux。这并不太令人惊讶因为这个消息是在 Hot Chips 上发布的Hot Chips 是每年在斯坦福大学举行的年度半导体会议。Hot Chips 关注的是最新的芯片进展,所以软件通常被排除在外。
IBM 一般会在发布前一年左右公布新的 POWER 处理器,所以有足够的时间进行 AIX 的更新。
加入 [Facebook][1] 和 [LinkedIn][2] 上的 Network World 社区,对热门话题进行评论。
--------------------------------------------------------------------------------
via: https://www.networkworld.com/article/3571415/ibm-details-next-gen-power10-processor.html
作者:[Andy Patrizio][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.networkworld.com/author/Andy-Patrizio/
[b]: https://github.com/lujun9972
[1]: https://www.facebook.com/NetworkWorld/
[2]: https://www.linkedin.com/company/network-world

View File

@ -0,0 +1,121 @@
[#]: collector: (lujun9972)
[#]: translator: (wxy)
[#]: reviewer: (wxy)
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (An attempt to make a font look more handwritten)
[#]: via: (https://jvns.ca/blog/2020/08/08/handwritten-font/)
[#]: author: (Julia Evans https://jvns.ca/)
一次让字体看起来更像手写体的尝试
======
![](https://img.linux.net.cn/data/attachment/album/202008/24/111019lzpc280kkvlfpv1p.jpg)
其实我对这个实验的结果并不是特别满意,但我还是想分享一下,因为摆弄字体是件非常简单和有趣的事情。而且有人问我怎么做,我告诉她我会写一篇博文来介绍一下 :)
### 背景:原本的手写体
先交代一些背景信息:我有一个我自己的手写字体,我已经在我的电子杂志中使用了好几年了。我用一个叫 [iFontMaker][1] 的令人愉快的应用程序制作了它。他们在网站上自诩为“你可以在 5 分钟内只用手指就能制作出你的手工字体”。根据我的经验“5 分钟”的部分比较准确 —— 我可能花了更多的时间,比如 15 分钟。我对“只用手指”的说法持怀疑态度 —— 我用的是 Apple Pencil它的精确度要好得多。但是使用该应用程序制作你的笔迹的 TTF 字体是非常容易的,如果你碰巧已经有了 Apple Pencil 和 iPad我认为这是一个有趣的方式我只花了 7.99 美元。
下面是我的字体的样子。左边的“CONNECT”文字是我的实际笔迹右边的段落是字体。其实有 2 种字体 —— 有一种是普通字体,一种是手写的“等宽”字体。(其实实际并不是等宽,我还没有想好如何在 iFontMaker 中制作一个实际的等宽字体)
![][2]
### 目标:在字体上做更多的字符变化
在上面的截图中很明显可以看出这是一种字体而不是实际的笔迹。当你有两个相同的字母相邻时就最容易看出来比如“HTTP”。
所以我想,使用一些 OpenType 的功能,以某种方式为这个字体引入更多的变化,比如也许两个 “T” 可以是不同的。不过我不知道该怎么做!
### 来自 Tristan Hume 的主意:使用 OpenType
然后我在 5 月份的 !!Con 2020 上(所有的[演讲录音都在这里!][3])看到了 Tristan Hume 的这个演讲:关于使用 OpenType 通过特殊的字体将逗号插入到大的数字中。他的演讲和博文都很棒,所以这里有一堆链接 —— 下面现场演示也许是最快看到他的成果的方式。
* 一个现场演示: [Numderline 测试][4]
* 博客文章:[将逗号插入到大的数字的各个位置OpenType 冒险][5]
* 谈话:[!!Con 2020 - 使用字体塑型,把逗号插入到大的数字的各个位置!][6]
* GitHub 存储库: https://github.com/trishume/numderline/blob/master/patcher.py
### 基本思路OpenType 允许你根据上下文替换字符
我一开始对 OpenType 到底是什么非常困惑。目前我仍然不甚了然,但我知道到你可以编写极其简单的 OpenType 规则来改变字体的外观,而且你甚至不需要真正了解字体。
下面是一个规则示例:
```
sub a' b by other_a;
```
这里 `sub a' b by other_a;` 的意思是:如果一个 `a` 字形是在一个 `b` 之前,那么替换 `a` 为字形 `other_a`
所以这意味着我可以让 `ab``ac` 在字体中出现不同的字形。这并不像手写体那样随机,但它确实引入了一点变化。
### OpenType 参考文档:真棒
我找到的最好的 OpenType 文档是这个 [OpenType™ 特性文件规范][7] 资料。里面有很多你可以做的很酷的事情的例子,比如用一个连字替换 “ffi”。
### 如何应用这些规则fonttools
为字体添加新的 OpenType 规则是超容易的。有一个 Python 库叫 `fonttools`,这 5 行代码会把放在 `rules.fea` 中的 OpenType 规则列表应用到字体文件 `input.ttf` 中。
```
from fontTools.ttLib import TTFont
from fontTools.feaLib.builder import addOpenTypeFeatures
ft_font = TTFont('input.ttf')
addOpenTypeFeatures(ft_font, 'rules.fea', tables=['GSUB'])
ft_font.save('output.ttf')
```
`fontTools` 还提供了几个名为 `ttx``fonttools` 的命令行工具。`ttx` 可以将 TTF 字体转换为 XML 文件,这对我很有用,因为我想重新命名我的字体中的一些字形,但我对字体一无所知。所以我只是将我的字体转换为 XML 文件,使用 `sed` 重命名字形,然后再次使用 `ttx` 将 XML 文件转换回 `ttf`
`fonttools merge` 可以让我把我的 3 个手写字体合并成 1 个,这样我就在 1 个文件中得到了我需要的所有字形。
### 代码
我把我的极潦草的代码放在一个叫 [font-mixer][8] 的存储库里。它大概有 33 行代码,我认为它不言自明。(都在 `run.sh``combine.py` 中)
### 结果
下面是旧字体和新字体的小样。我不认为新字体的“感觉”更像手写体 —— 有更多的变化,但还是比不上实际的手写体文字(在下面)。
我觉得稍微有点不可思议,它明明还是一种字体,但它却要假装成不是字体:
![][9]
而这是实际手写的同样的文字的样本:
![][10]
如果我在制作另外 2 种手写字体的时候,把原来的字体混合在一起,再仔细一点,可能效果会更好。
### 添加 OpenType 规则这么容易,真酷!
这里最让我欣喜的是,添加 OpenType 规则来改变字体的工作方式是如此的容易比如你可以很容易地做出一个“the”单词总是被“teh”代替的字体让错别字一直留着
不过我还是不知道如何做出更逼真的手写字体:)。我现在还在用旧的那个字体(没有额外的变化),我对它很满意。
--------------------------------------------------------------------------------
via: https://jvns.ca/blog/2020/08/08/handwritten-font/
作者:[Julia Evans][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://jvns.ca/
[b]: https://github.com/lujun9972
[1]: https://2ttf.com/
[2]: https://jvns.ca/images/font-sample-connect.png
[3]: http://bangbangcon.com/recordings.html
[4]: https://thume.ca/numderline/
[5]: https://blog.janestreet.com/commas-in-big-numbers-everywhere/
[6]: https://www.youtube.com/watch?v=Biqm9ndNyC8
[7]: https://adobe-type-tools.github.io/afdko/OpenTypeFeatureFileSpecification.html
[8]: https://github.com/jvns/font-mixer/
[9]: https://jvns.ca/images/font-mixer-comparison.png
[10]: https://jvns.ca/images/handwriting-sample.jpeg