Code Monkey home page Code Monkey logo

fontspec's Introduction

The expl3 (LaTeX3) Development Repository

Overview

The repository contains development material for expl3. This includes not only code to be developed into the expl3 kernel, but also a variety of test, documentation and more experimental material. All of this code works on top of LaTeX2e.

The following directories are present in the repository:

  • l3kernel: code forms the expl3 kernel and all stable code. With a modern LaTeX2e kernel, this code is loaded during format creation; when using an older LaTeX2e kernel, this material is accessible using the expl3 package.
  • l3backend: code for backend (driver) level interfaces across the expl3 codebase; none of this code has public interfaces, and so no distinction is made between stable and experimental code.
  • l3packages: code which is written to be used on top of LaTeX2e to explore interfaces; this bundle is now made up of historical material, and the concepts have been migrated to the LaTeX2e kernel
  • l3experimental: code which is written to be used on top of LaTeX2e to experiment with code and interface concepts. The interfaces for these packages are still under active discussion. Parts of this code may eventually be migrated to l3kernel.
  • l3trial: material which is under very active development, for potential addition to l3kernel or l3experimental. Material in this directory may include potential replacements for existing modules, where large-scale changes are under-way. This code is not released to CTAN.
  • l3leftovers: code which has been developed in the past by The LaTeX Project but is not suitable for use in its current form. Parts of this code may be used as the basis for new developments in l3kernel or l3experimental over time.

Support material for development is found in:

  • support, which contains files for the automated test suite which are 'local' to the repository.

Documentation is found in:

  • articles: discussion of concepts by team members for publication in TUGBoat or elsewhere.

The repository also contains the directory xpackages. This contain code which is being moved (broadly) l3experimental. Over time, xpackages is expected to be removed from the repository.

Issues

The issue tracker for expl3 is currently located on GitHub.

Build status

We use GitHub Actions as a hosted continuous integration service. For each commit, the build status is tested using the current release of TeX Live.

Current build status: build status

Development team

This code is developed by The LaTeX Project.

Copyright

This README file is copyright 2021-2024 The LaTeX Project.

fontspec's People

Contributors

alt avatar chrullrich avatar davidcarlisle avatar dependabot[bot] avatar dfc avatar dohyunkim avatar e-kwsm avatar eroux avatar isaacoscar avatar jfbu avatar josephwright avatar khaledhosny avatar lemzwerg avatar mpg avatar muzimuzhi avatar qinglee avatar switwu avatar timothygu avatar u-fischer avatar wspr avatar zauguin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fontspec's Issues

slanted shape

Now that XeTeX can artificially slant a font, perhaps I should revisit my decision to have \textsl mean \textit.

"metric data not found or bad" although it is already used in the document

In a four-page document, I am using fontspec with lualatex and load the main font with

\setmainfont[BoldFont={*-Bold}, BoldItalicFont={*-BoldItalic}, ItalicFont={*-Italic}]{Baskerville10Pro}

After the second page, however, the PDF does not contain the italic text (it is successfully employed in the first two pages). LuaLaTeX complains

! Font \EU1/Baskerville10Pro(0)/m/it/10=./Baskerville10Pro-Italic.otf not loadable: metric data not found or bad.

Needless to say, the italic font is embedded in the PDF as are the others.

WordSpace issues

Via the XeTeX mailing list:

Dear all,

Here is my summary of WordSpace odds:

As far as I can see, WordSpace with single parameter sets all 3 fontdimens
to the same value (and do not scale them to the same ratio, as the manual
states). In the second invocation it uses the previously set values, not
the default ones (this is probably not a bug) and scales everything again,
UNLESS the new ratio equals the previous one (examples 3.1 and 3.2). The
bad thing is, that if used stand-alone (example 3 and 4) the changes spread
across the enclosing group boundary.

Yours,
Vadim

(fontspec.sty v1.18)

\documentclass{minimal}
\usepackage{fontspec}
\setmainfont{Garamond Premier Pro}

\def\test{Space=\the\fontdimen2\font+\the\fontdimen3\font\the\fontdimen4\font/\the\spaceskip}

\begin{document}
1. {This is a test. \par \test}

2. {\addfontfeature{WordSpace={1,1,1}}This is a test. \par \test} \par \test

3. {\addfontfeature{WordSpace={2}}This is a test. \par \test} \par \test

3.1. {\addfontfeature{WordSpace={2}}This is a test. \par \test} \par \test

3.2. {\addfontfeature{WordSpace={2.1}}This is a test. \par \test} \par \test

4. {\addfontfeature{LetterSpace=2,WordSpace=2.5}This is a test. \par \test}
\par \test
\end{document}

Investigate some sort of [no-math] improvement

From Andrew Moschou:

Say I have this document:

 \documentclass{article}

 \usepackage[no-math]{fontspec}
 \makeatletter      % \zf@package@euler@loadedtrue\zf@math@lucidatrue
 \setmainfont[Numbers={OldStyle,Proportional}]{Minion Pro}
 \setmathrm[Numbers={OldStyle,Proportional}]{Minion Pro}

 \usepackage{MnSymbol}

 \newfontfamily\Latin[Numbers={OldStyle,Proportional}]{Minion Pro}
 \DeclareSymbolFont{Lmn}{EU1}{\zf@family}{m}{n}
 \DeclareSymbolFont{Lmit}{EU1}{\zf@family}{m}{it}

 \catcode`¡=13
 \newcommand¡[1]{\DeclareMathSymbol{#1}{\mathord}{Lmn}{`#1}}
       ¡0¡1¡2¡3¡4¡5¡6¡7¡8¡9
 \newcommand¡[1]{\DeclareMathSymbol{#1}{\mathalpha}{Lmit}{`#1}}
       ¡a¡b¡c¡d¡e¡f¡g¡h¡i¡j¡k¡l¡m¡n¡o¡p¡q¡r¡s¡t¡u¡v¡w¡x¡y¡z
       ¡A¡B¡C¡D¡E¡F¡G¡H¡I¡J¡K¡L¡M¡N¡O¡P¡Q¡R¡S¡T¡U¡V¡W¡X¡Y¡Z

                     % \def\Phi{\mathalpha{\mathrm{Φ}}}

 \begin{document}
 $maths$. Some text. $\sin0=0$
                     % $\Xi\Phi\Omega$
 \end{document}

It turns out that \setmathrm has no effect because of [no-math] and "sin" is printed in cmr. Removing [no-math] gives error \mathdollar already defined because MnSymbol tries to define it when fontspec already defined it.

Also, use [no-math], comment out \usepackage{MnSymbol} and put

 \def\Phi{\mathalpha{\mathrm{Φ}}}

in the preamble, and write $\Xi\Phi\Omega$ somewhere in the document. XeLaTeX appears to process the document without a problem, but we get "ΞΩ" instead of the expected "ΞΦΩ"!

These issues go away if I remove [no-math] and introduce \zf@package@euler@loadedtrue\zf@math@lucidatrue.

Perhaps something to investigate for a future fontspec version.

Support TTC and Dfont in ExternalLocation

Since LuaTeX can load both font types, we should support those suffixes. Also, LuaTeX has special syntax to load the subfonts; fontfile.ttc(subfont) where subfont is the subfont name, or fontfile.ttc(num) where num is the subfont number, we need to think about handling this too.

Using "Language" or "Script" options raises an error with LuaTeX

Consider the following example:
\documentclass{article}
\usepackage{fontspec}
\setmainfont[Language=Latin]{TeX Gyre Termes}
\begin{document}
Hello World
\end{document}

I tried to debug this, what I got so fare is that \zf@basefont isn't defined in case of LuaTeX as it only get defined after calling \setkeys[zf]{preparse}{Renderer=ICU}, so commenting out line 3120 will cause an error with XeTeX too (a different error, but both seem to be different symptoms of the same bug, in fact the LuaTeX error shows another bug in the lua code but I'm not fixing it now because it will cover the real issue).

Better font feature assignment

I note that sometimes fontspec issues warnings in which the name of the font is given with the suffix printed twice, as for example "Linux Libertine/ICU/ICU" (or even "Linux Libertine/ICU/ICU/ICU/ICU"). This is certainly harmless, but probably not the intended behaviour. If you want I can send you a minimal example.

Another purely aesthetic issue: \zf@default@options sometimes contains repeated information:

Package fontspec Info: Defining font family for 'Linux Libertine' with options 
[,Script=Cyrillic,Script=Cyrillic] on input line 40. 

These might be from various grouping problems. Like you say, they're harmless, but they are also ugly :) If you could send through an example that might help me hunt down some of the worse cases.

See attachments. Look in the logfile at the various warning and info messages emitted by fontspec, and you'll find all sorts of things to improve! :) The problems all result from repeated applications of \addfontfeature on the same font actually, so you should know where to hunt.

Two obvious things \addfontfeature should do are:

  1. to check first for the availability of that feature, and only add it if it is
  2. to check whether a certain feature is already loaded, in which case it should be replaced by the new one instead of just appending it to the list of current features.
    That would considerably reduce the amount of strange messages issued by fontspec.

fontspec broken after updating texlive

After my texlive update yesterday, fontspec stopped working, I get:
! Undefined control sequence.
\use:x ...: \cs_set:Npx \cs_tmp: {#1}\exp_args:wN
\group_end: \cs_tmp:
l.5 \setmainfont{Arno Pro Italic}

 ? 
 ! Emergency stop.
 \use:x ...: \cs_set:Npx \cs_tmp: {#1}\exp_args:wN 
                                                   \group_end: \cs_tmp: 
 l.5 \setmainfont{Arno Pro Italic}

There were some updates to expl3 and xpackages, it might be the cause.

\newfontface is broken

\newfontface gives a "font not loadable" error with both xetex and luatex:

 \documentclass{article}
 \usepackage{fontspec}
 \newfontface\pagella{TeX Gyre Pagella}
 \begin{document}
 \pagella
 \end{document}

gives:
! Font \zf@basefont=BoldFont={},ItalicFont={},SmallCapsFont={}, at 10pt not loa
dable: metric data not found or bad.

\let
l.3 \newfontface\pagella{TeX Gyre Pagella}

Test suite

We need a test suite, this is obvious, though I had absolutely no idea how to implement it.

Optical sizes with selected font variants

From Fermin Otalora:

Dear Will, I had a very interesting weekend browsing the fontspec
manual and testing the functionality of the package. Thank you for
this nice piece of software, after that, I'm considering to switch
from pdflatex+NFSS to xelatex+fontspec. The final test today has been
to try fontenc with a really wide family of typefaces. I like the
Adobe Minion Pro family so I tried to write a package to handle the 64
fonts there. There are 4 optical sizes, each one featuring normal and
condensed versions of 4 weights (regular, medium, semibold and bold).
I normally use either

Regular+Semibold+Italic+SemiboldItalic

or

Medium+Bold+MediumItalic+BoldItalic

depending on the kind of docment. So I started with two alternative
\setmainfont[Mapping=tex-text,
BoldFont=Minion Pro Semibold,
BoldItalicFont=Minion Pro Semibold Italic,
]{Minion Pro}
and
\setmainfont[Mapping=tex-text,
BoldFont=Minion Pro Bold,
BoldItalicFont=Minion Pro Bold Italic,
]{Minion Pro}

Then I start with the optical sizes. My naive idea was to do something like:

SizeFeatures={
 {Size=-8.4,
    BoldFont=Minion Pro Caption Bold,
    BoldItalicFont=Minion Pro Caption Bold Italic,
    Font=Minion Pro Caption}
 {Size=8.4-13,
    BoldFont=Minion Pro Bold,
    BoldItalicFont=Minion Pro Bold Italic,
    Font=Minion Pro}
 {Size=13-19.9,
    BoldFont=Minion Pro Subhead Bold,
    BoldItalicFont=Minion Pro Subhead Bold Italic,
    Font=Minion Pro Subhead}
  {Size=19.9-,
    BoldFont=Minion Pro Display Bold,
    BoldItalicFont=Minion Pro Display Bold Italic,
    Font=Minion Pro Display}
}

I didn't find anyting similar in the manual and my TeX macro
programing is not strong enough to study your code so I just tried
some variations. Unfortunately I found that none of them worked... The
Font Family ID of all these typefaces is the same so I cannot guess a
way to select semibold/bold, caption/text/subhead/display and
normal/condensed in an orthogonal way using options in a package. Of
course my experience with fontspec is rather limited, but browsing the
manual I'm very pesimistic...

Is there a way of doing this kind of magic?

Font features no longer work with external fonts

\documentclass[]{article}
\usepackage{fontspec}
%\setmainfont[Ligatures=TeX]{texgyretermes-regular.otf} % not OK
\setmainfont[Ligatures=TeX]{TeX Gyre Termes} % OK
\begin{document}
``Some good---text''
\end{document}

\DeclareActiveUnicodeCharacter

From: Francois.Legendre

It will be great if the XeTeX user could use a macro like the following:
\DeclareActiveUnicodeCharacter{α}{\alpha}
with obvious semantic.

I am not a TeX guru and I appreciate if you could include this kind of
macro in the xltxtra package.

Better SmallCapsFont processing

If you specify a global SmallCapsFont, it should do its best to pick up the bold/italic shapes as well, if they exist.

E.g., \newfontfamily\Scala[SmallCapsFont={*Caps}]{Scala}

Add interface for ttc fonts

From Khaled: LuaTeX has special syntax to load the subfonts; fontfile.ttc(subfont) where subfont is the subfont name, or fontfile.ttc(num) where num is the subfont number, we need to think about handling this too.

Document vertical typesetting

From Michiel:

Would it be an idea to add a small bit to the fontspec documentation between 6.14 and 6.15 called "CJK in vertical mode" with the summary text "you want to try the [RawFeature=vertical,Script=CJK] setting first, before trying to get the same effect using OpenType features (such as vrt2, vkna, etc.)".

if_num, if_case, if_dim

If using fontspec, lualatex from Tex Live 2009 complains

! Command name `\if_num:w' already defined! Current meaning: \ifnum.
! Command name `\if_case:w' already defined! Current meaning: \ifcase.
! Command name `\if_dim:w' already defined! Current meaning: \ifdim

This bug might originate at some other place, but for me it happens only with fontspec.

Optical size problem

From Lars Davies

Incidentally, I have found something rather
amusing. If I define my font families early on in the preamble or package,
using \setmainfont etc, then, even if I use an set with Optical sizes such
as Minion Pro Opticals, XeLaTeX resolutely refuses to switch sizes in margin
notes created with \marginpar. I have to either redefine the command or
create a new command along the following lines to get optical sizes in my
margin notes:

\setmainfont[Numbers=OldStyle]{Minion Pro}

...

\newcommand\marginnote[1]{%
  \-\oldmarginpar[{
          \raggedleft
          \fontspec[Colour=17365D, OpticalSize=8]{Minion
Pro}\scriptsize\hspace{0pt}#1}]%
        {\raggedright
          \fontspec[Colour=17365D, OpticalSize=8, Numbers=OldStyle]{Minion
Pro}
          \scriptsize\hspace{0pt}#1}}

Without the extra \fontspec declarations I get Minion Pro Regular at 8pt,
rather that Minion Pro Caption. Am I missing something here?

ExternalLocation in \defaultfontfeatures

I discovered that the natural
\defaultfontfeatures{ExternalLocation=/Users/will/Fonts/}
\fontspec{CharisSILR.ttf}
unfortunately doesn't work (but it should).

Add named fonts to LuaTeX

This will need some error checking with a big warning telling people what to do on the command line to generate the font name database.

Optical sizes and small caps

From Chris Newton:

A little while ago, you were kind enough to help me with some problems using XeLaTeX/fontspec that I posted about on comp.text.tex. One of those was that \textsc was not selecting small caps when I was using Adobe's Cronos Pro Opticals font set, though several variations using \fontspec to specify the OpenType features more directly did seem to work.

After a bit of investigation, it seems that the cuplrit is some interaction with SizeFeatures. As requested, I am attaching a minimal example file. I've now worked around this problem myself, but if you want to change anything in light of this but don't have Cronos Pro yourself to test with, please feel free to e-mail me and I'll help if I can.

Thanks again for the help,
Chris
\documentclass{article}
\usepackage{fontspec}
\setsansfont[SizeFeatures={
{Size={-8.1}, OpticalSize=6},
{Size={8.1-14}, OpticalSize=10},
{Size={14-24}, OpticalSize=16},
{Size={24-}, OpticalSize=26}
}]{Cronos Pro}
% The above prevents use of small caps, but using \setsansfont{Cronos Pro} works fine.

\begin{document}
\sffamily\textsc{This does not work, but if you remove the SizeFeatures it does.}
\end{document}

Wrong directory from make tds

Files should be in texmf/tex/xelatex, not texmf/tex/latex. See the thread “$TEXMFHOME not working right” on the TeX Live mailing list.

add transparency

ConTeXt is able to set transparency to fonts (at least) using the XeTeX engine. I don't know how they do it. (Of course, it shouldn't be hard to add this to LuaTeX too).

Would it be possible to include a \transparency command with value range from 0 to 100 that could be applied to both text and other objects as well?

Thanks,

Pablo

SmallCaps feature checking uses the wrong font

\setmainfont[
    SmallCapsFont={TeX Gyre Termes},
    SmallCapsFeatures={Scale=.85,Letters=SmallCaps}
  ]{Georgia}

produces

Package fontspec Warning: 
    OpenType feature 'Letters=SmallCaps' (+smcp) not available
    for font "Georgia/ICU", 
    with script 'Latin',
    and language 'Default'.

EU1 vs xunicode

From: Ross Moore
Subject: Re: capacity exceeded error with xunicode.sty
Date: Wed, 2 Apr 2008 12:06:24 +1100

Hi Will,

On 02/04/2008, at 10:10 AM, Will Robertson wrote:

On 02/04/2008, at 7:36 AM, Ross Moore wrote:

But personally I think that the real problem lies
within fontspec.sty , since it does not properly

Or rather eu1enc.def, I suppose.

OK; that is a better place to put such coding as I proposed, provided there is a guarantee that eu1enc.def gets read.

However there is still a problem in fontspec.sty which surfaces with Ulrike's example.

Here's the relevant coding lines:
\DeclareOption{cm-default}{@zf@euencfalse}
\DeclareOption{lm-default}{@zf@euenctrue}
...
\ExecuteOptions{config,lm-default,math}
\ProcessOptions*
...
\if@zf@euenc
\def\zf@enc{EU1}
\renewcommand{\rmdefault}{lmr}
\renewcommand{\sfdefault}{lmss}
\renewcommand{\ttdefault}{lmtt}
\RequirePackage[\zf@enc]{fontenc}
\else
\def\zf@enc{U}
\let\encodingdefault\zf@enc
\fi
\let\UTFencname\zf@enc
\let\cyrillicencoding\zf@enc
\let\latinencoding\zf@enc
\g@addto@macro\document{%
\let\cyrillicencoding\zf@enc
\let\latinencoding\zf@enc}

You use the \if@zf@euenc switch to handle whether to use EU1 or U as the encoding.

But unless fontspec is loaded as:
\usepackage[cm-default]{fontspec}

then we must get execution of
\RequirePackage[EU1]{fontenc}

which causes all the characters already defined within xunicode.sty to become inaccessible, under normal usage.

Surely that was not your intention with this coding.

I think that what is really needed here is for eu1enc.def to have a macro called \check@for@xunicode, say.

If this determines that xunicode is already loaded, then it would redefine \EU1-cmd to have an extra level of checking for text-characters.
This would use the existing value of \UTFencname (presumably 'U', but it may be different) and look for a \UTFencname-version character when there is no specific EU1-version available.

I think this is a better fix than providing an optional argument to \usepackage{xunicode} , or forcing xunicode to load fontspec.

Another problem with simply calling
\DeclareFontEncoding{EU1}{}{???}
is that if fontspec.sty is not loaded,
then it implies the existence of other files;
these don't exist and you get a warning:

Actually, as long as you're using XeTeX+xdvipdfmx this does works.
EU1 is a "real" font encoding:

\documentclass{article}
\usepackage[EU1]{fontenc}
\begin{document}
test
\end{document}

I haven't bothered making more eu1 font definitions because (a)
there aren't that many OpenType fonts in TeXLive2007, and (b) I
don't think many people are actually using XeTeX this way.

OK.
I can see that with the vagaries of different fonts, there can
potentially be a need for different varieties of the EU1 encoding,
according to which characters are actually available.

You could have methods (i.e., TeX commands) adapted to specific
fonts that undeclare macros that are not supported by the font.
Rather, they can (locally) declare that the unsupported characters
are unavailable. These methods can be patched-in to font-switching
commands, using
\AtBeginDocument{\let}
or similar delaying mechanism, so would only apply to when
the particular font is required. The changes would not apply when
using other fonts which may indeed properly support those characters.

This is an alternative to having a different encoding for each font
that supports only a subset of Unicode, and having to read a file
(such as the bulk of xunicode.sty) to declare all the characters
that it supports.

Microtypography

Fontspec is the natural package for font related setup, now microtypography support is available in luaotfload, we should provide an interface to it.

[LuaTeX-only] Requiring a recent luatextra

As you use features that appeared in luatextra v0.95 (released on CTAN and in TeX Live), I think it would be better to have the line

\RequirePackage{luatextra}[2009/12/16]

after \RequirePackage{luaotfload}, in order to get an understandable error for people who would want to use fontspec with an outdated version of luatextra (like the one shipped in Debian's TeXLive 2009).

Thank you,

Elie

test with eulervm

When I originally wrote fontspec, XeTeX didn't support virtual fonts. Now it does, so I should test against eulervm as well.

Check bf+sc warning

\documentclass[a4paper,12pt]{article}
\usepackage{xltxtra}
\begin{document}
\textbf{\textsc{test}}
\end{document}

Note that if I remove the package xltxtra, I have a font warning:

LaTeX Font Warning: Font shape `OT1/cmr/bx/sc' undefined
(Font)              using `OT1/cmr/bx/n' instead on input line 4.

But with xltxtra, I have no warning... And the output is not what
is expected...

\documentclass[12pt]{article}
\usepackage[EU1]{fontenc}
\usepackage{lmodern,fontspec}
\begin{document}
\textsc{\textbf{a}}
\end{document}

ExternalLocation by shape

From: "moneylcj"
Subject: Re: The \fontspec commad's option "ExternalLocation"can'tcoexist with "BoldFont" or "ItalicFont" option ?

I found the BoldFont and Regular font all must be installed-font or all must to be uninstalled-font.
In my OS "SimHei" is installed-font , "e:\moneylcj\font\fzboyasong.ttf" and "e:\moneylcj\font\fzltxh.ttf" is uninstalled-font.

this section has no error:
\documentclass{article}
\usepackage{fontspec}
\begin{document}
\fontspec[ExternalLocation={e:/moneylcj/font/}, BoldFont={fzltxh.ttf}]{fzboyasong.ttf}
regular \textbf{bold}
\end{document}

but this section has error:
\documentclass{article}
\usepackage{fontspec}
\begin{document}
\fontspec[ExternalLocation={e:/moneylcj/font/}, BoldFont={SimHei}]{fzboyasong.ttf}
regular \textbf{bold}
\end{document}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.