Giter VIP home page Giter VIP logo

batchrobofontextension's Introduction

Batch

Documentation is here

batchrobofontextension's People

Contributors

gferreira avatar letterror avatar roberto-arista avatar rohernandezz avatar ryanbugden avatar typemytype 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

Watchers

 avatar  avatar  avatar  avatar  avatar

batchrobofontextension's Issues

Batch not generating SVGs neither WOFF

Hallo Frederik,

I’m getting this error while trying to generate webfonts:


Build WOFF (TTF)
''''''''''''''''
path:
Failed:
Traceback (most recent call last):
File "/Users/SO/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/webFormats/init.py", line 536, in run
File "/Users/SO/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/webFormats/init.py", line 418, in _convertPath
File "/Users/SO/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/webFormats/init.py", line 154, in convertToWoff
File "/Users/SO/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/webFormats/woffBuilder.py", line 162, in WOFFBuilder
File "/Users/SO/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/webFormats/woffBuilder.py", line 33, in init
AttributeError: Format


I’m using FBs Robofont, and a few weeks back I used it without problem. Do you think this could be affecting?

Thanks!

Custom axis names cause problems with generation

This may be related to #20(?) but unregistered axis names seem to break the generation process for variable fonts. Even changing the capitalization of the axis name from "weight" to "Weight" results in the final fonts not being successfully generated. You can see the "tmp_" fonts quickly popping in and out of the directory, and the report in "Batch Generated Variable Fonts Report.txt" seems OK, but I don't think the final fonts are saved successfully unless you stick to registered axis names.

folder support gone in new version

New version doesn't allow you to drop a folder onto the list to generate. This was a feature before that I REALLY liked using. Sometimes I need to generate many folders of UFOs at a time, so if I can drop 10 folder onto Batch it's much easier than opening one folder, drop UFOs, open next folder, drop UFOs … Please add this feature back! Thank you.

openTypeGaspRangeRecords reference, deserialize lib reference

Trying to generate variable fonts using Batch for the first time, and I've hit a couple errors depending on the designspace file (these are designspace files that have worked running directly from fontTools varLib).

First seems like it is a UFO2 vs 3 issue, calling a future info attribute. I am running this in Version 1.7.1b (built 1609082244).

******************************
Traceback (most recent call last):
  File "/Users/david/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/batchTools.py", line 123, in runTask_
  File "/Users/david/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/variableFontGenerator/__init__.py", line 59, in run
  File "/Users/david/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/batchTools.py", line 282, in generateVariationFont
  File "/Users/david/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/batchTools.py", line 267, in process
  File "/Applications/FontApps/RoboFont.app/Contents/Resources/lib/python2.7/mutatorMath/ufo/document.py", line 407, in process
  File "/Applications/FontApps/RoboFont.app/Contents/Resources/lib/python2.7/mutatorMath/ufo/document.py", line 562, in readInstances
  File "/Applications/FontApps/RoboFont.app/Contents/Resources/lib/python2.7/mutatorMath/ufo/document.py", line 638, in _readSingleInstanceElement
  File "/Applications/FontApps/RoboFont.app/Contents/Resources/lib/python2.7/mutatorMath/ufo/document.py", line 700, in readInfoElement
  File "/Applications/FontApps/RoboFont.app/Contents/Resources/lib/python2.7/mutatorMath/ufo/instance.py", line 212, in addInfo
  File "/Applications/FontApps/RoboFont.app/Contents/Resources/lib/python2.7/mutatorMath/ufo/instance.py", line 228, in _copyFontInfo
AttributeError: 'Info' object has no attribute 'openTypeGaspRangeRecords'

******************************

Oddly enough I tried to run this in my copy of RoboFont Version 2.0b (built 1609082301), but I can't find Batch in the menu, even after exiting safe mode.

screen shot 2016-10-12 at 9 01 08 am

The second error has to do with the lib:

Traceback (most recent call last):
  File "/Users/david/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/batchTools.py", line 415, in _generateVariationFont
  File "/Applications/FontApps/RoboFont.app/Contents/Resources/lib/python2.7/fontCompiler/compiler.py", line 125, in generateFont
  File "/Applications/FontApps/RoboFont.app/Contents/Resources/lib/python2.7/fontCompiler/compiler.py", line 162, in prepareCompile
AttributeError: 'Lib' object has no attribute 'deserialize'

The designspace file does contain a <lib copy="1" /> tag in one of the sources, and there's nothing besides the usual "com.typemytype....." inside that lib.

Thanks so much for implementing this, and let me know if you want me to send designspace files or if I can offer anything else!

One bad UFO kills the whole batch

Currently if Batch hits one non-generating UFO, ie non 1000UPM for OTF or quadratic curves when for OTF, the whole process stops. This is the traceback I get:
RuntimeError: maximum recursion depth exceeded

I would expect that Batch would skip a problematic UFO (and report it) rather than forcing the whole batch generate to stop. Thanks!

Exporting webfonts fails

The file exports fine with the normal generate command. The traceback is as follows:

******************************
Traceback (most recent call last):
  File "/var/folders/8y/vjr0hwzx58q4ntt120h4n4z00000gn/T/tmpNUkmwc/batchRoboFontExtension-master/Batch.roboFontExt/lib/tools.py", line 72, in runTask_
  File "/var/folders/8y/vjr0hwzx58q4ntt120h4n4z00000gn/T/tmpNUkmwc/batchRoboFontExtension-master/Batch.roboFontExt/lib/webFormats/__init__.py", line 331, in run
  File "/var/folders/8y/vjr0hwzx58q4ntt120h4n4z00000gn/T/tmpNUkmwc/batchRoboFontExtension-master/Batch.roboFontExt/lib/webFormats/__init__.py", line 231, in _convertPath
  File "/Applications/RoboFont.app/Contents/Resources/lib/python2.7/compositor/__init__.py", line 39, in __init__
  File "/Applications/RoboFont.app/Contents/Resources/lib/python2.7/fontTools/ttLib/__init__.py", line 156, in __init__
TTLibError: Not a TrueType or OpenType font (not enough data)

******************************
Exception AttributeError: "'Font' object has no attribute 'source'" in <bound method Font.__del__ of <compositor.Font object at 0x15a3b5310>> ignored

Problem with naming temp .ttf files

Masters without proper familyName and styleName (don't judge, it happens) result in temp .ttf files with the same name. That results in a single ttf on disk.

Option to apply italic offset

It'd be great if there was an option when generating from Batch to apply the italic offsets specified in each UFO.

Variable Fonts

I get this traceback:```


Traceback (most recent call last):
File "/Users/cjdunn/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/batchTools.py", line 123, in runTask_
File "/Users/cjdunn/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/variableFontGenerator/init.py", line 59, in run
File "/Users/cjdunn/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/batchTools.py", line 279, in generateVariationFont
AttributeError: 'BathDesignSpaceDocumentReader' object has no attribute 'warpDict'


could this be a typo: BathDesignSpaceDocumentReader ? 

ImportError: No module named ufo

I'm getting a traceback when using the latest Batch 1.9.3 with the latest RF 1.8.3 Beta build 1702022141. Batch doesn't show up in the File menu. I had to go back to Batch 1.7.

Here's the traceback in the output window when I start RF:

Deprecated: use 'buildAdditionContextualMenuItems'.
Traceback (most recent call last):
  File "main.py", line 5, in <module>
  File "...path/to/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/toolBox.py", line 19, in <module>
  File "...path/to/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/variableFontGenerator/__init__.py", line 5, in <module>
ImportError: No module named ufo

Batch is not generating SVG

Batch isn’t generating SVG fonts on my end. Webfont report doesn’t indicate any error though. Current workaround is converting OTFs:

from mojo.compile import otf2svg

paths = [insert fonts here]

for path in paths:
    otf2svg(path, path.replace("otf", "svg"))

The report output is something like this:

Web Fonts:

Test_Test_v1-Regular.ufo
---------------------------
source: /path/Test_Test_v1-Regular.ufo

Build SVG
'''''''''
    path: /path/Test_Test_v1-Regular.svg

TTFAutohint options:
********************
addTTFAutoHintInfo     = False
dwClearType            = False
fallbackScript         = False
gdiClearType           = True
grayScale              = False
hintRangeMaximum       = 50
hintRangeMinimum       = 8
hintingLimit           = 200
noHintingLimit         = False
noXHeightIncreaseLimit = False
overRideFontLicense    = False
preHinting             = False
symbolFont             = False
xHeightIncreaseLimit   = 14

[variableFontsGenerator] Why does makeMasterKerningCompatible extrapolate?

While making Variable Fonts with Batch, I noticed some of the kerning going crazy.

In a design space, I had two masters very close together with different kerning values, and a master at the end of the space with a kerning value of "0", which by default is removed from the kerning plist.

EXPECTATION
===========

    A  B             C
----o--o-------------o
  -10 -15           (0)

What is expected is that the instances between B and C would have kerning values between -15 and 0. What was happening was that I was finding a huge negative number kern for C, something like -29583.

BATCH
=====

    A  B             C
----o--o-------------o
  -10 -15           -29583

It turns out Batch is causing this. In the makeMasterKerningCompatible method, it tries to even out the kerning lists for all the masters by making an extrapolation, based on a design space defined by existing kerning values. It ignores the "0" implied by the absence of a kern pair in the C master, and instead generates a value based off of the two existing masters.

I was wondering, why does Batch do this? This is wrong in my view. Instead, I think Batch should just assume that if a kerning pair is "missing" in a master, the pair should be inserted as "0". If the designer wanted there to be any other kern, he or she would have made it themselves.

Removed Overlap button not working

I just noticed that files generated from Batch don't get overlap removed when only the "Remove Overlap" button is checked. The only way I can get it to remove overlap is with both "Remove Overlap" AND "Decompose" buttons checked. I think this was working correctly before, so I'm not sure at what point something might have changed.

I've been able to reproduce with multiple different UFOs using the latest Beta version of RF [1605141504] and also with the previous public release [1.6]. Also doesn't seem to matter if the "Remove Overlap" preference is set to in the font info or not, and it's the same for both OTF and TTF.

This isn't a problem for the "Web Fonts" OTF or TTF option in Batch – overlaps get removed correctly for both of these options. If I use File > Generate and check the "Remove Overlap" button then everything works, and same if I use a script to generate. The problem only happens in Batch. Thanks!

Feature suggestion: preprocessing and postprocessing scripts

I ❤ Batch and I wouldn't want to use anything else. However there are a few things that I like to do that are specific to my workflow, such as dealing with double encodings that the FDK strips from the UFO, etc. Right now I have to run them as a separate step, but would love to incorporate it into my generating process.

Would you consider allowing users to add an optional preprocessing and postprocessing script to Batch? I think it would be as easy as letting the user select these scripts in the UI, and then providing a way for the scripts to access the source UFO and the generated font (and the designspace, if applicable).

(I considered making my own version of Batch, but then I have to keep it up to date and distribute it to anyone else generating my fonts. Adding a custom preprocessing/postprocessing preferences seems like a cleaner solution.)

Feel free to close this issue if you’re not interested, and thanks for hearing me out!

Generating TTF / webfont error

I get this error from Batch when I try to generate TTF / webfonts in Batch. Using RF 1902152254 / Batch 1.9.8

Exception ignored in: ​<bound method Font.__del__ of <webFormats.woffBuilder.Font object at 0x113655c88>>
Traceback (most recent call last):
  File "/Applications/RoboFont3.app/Contents/Resources/lib/python3.6/compositor/font.py", line 32, in __del__
    self.source.close()
AttributeError: 'Font' object has no attribute 'source'

Underline values when generating ttf woff and woff2 from off

It seems that when generating ttf flavoured woff an woff2 from an otf source the postscriptUnderlineThickness and postscriptUnderlinePosition attributes are set to zero (Apparently, Firefox uses these values to define its link text-decoration default 🤔).

Generating a good old desktop ttf from an ufo is working, postscriptUnderlineThickness and postscriptUnderlinePosition are set correctly in the resulting font.

Publicly available extension requires beta version of RoboFont

The latest version of the extension as offered through Mechanic 2 requires RoboFont 3.2, which is beta software. While I’m not particularly afraid of beta software, I think the Batch extension has been with us for many versions of RF – unless the latest bug fixes truly require the latest beta of RF, I think that it should be available to us using release versions.

Whether Mechanic 2 should show version requirements in the layout is an issue that I maybe should open in the appropriate repository as well…

Web Fonts: generates OTF without the box being checked

If I generate WOFF + WOFF2 files without checking the boxe "Save OTF" I end up with OTF files anyway (with the _web Suffix).
I'm using the current version of Batch along with the latest RF beta (1.7b (built 1601082309)) with 10.9.5.

naming consistency of generated fonts

With a font file named: BIG-Bang-Regular-A001.ufo

When generating Web Fonts, you get:
– BIG-Bang-Regular-A001_web.woff

When generating "Desktop" Fonts, you get:
– BIGBang-Regular.woff

I'd suggest to keep the original filename (for designers using it for versioning) and syntax.

replace lazy import of AppKit

on Monterey lazy import somehow fails

    from AppKit import *
    ModuleNotFoundError: No module named 'AppKit._AppKit.ContactsPersistence'; 'AppKit._AppKit' is not a package

save report

goes wrong somewhere at the end

batchTools.py line 86

AssertionError: PUSHW value out of range

When trying to export web font files, I run into a strange issue that then breaks the current ‘run’: the error doesn’t return, but every following export fails with the message TTLibError: Not a TrueType or OpenType font (not enough data); the PUSHW error returns after I restart RoboFont.

For what it’s worth, I can’t get the extension to export TTFs regardless of these errors. Perhaps warrants its own issue, but I can’t find a traceback anywhere, and no report file. The normal Generate function works fine – TTFs roll out, and ttf2woff and ttf2eot convert without a hitch.

Build WOFF (TTF)
''''''''''''''''
    path: […]/Dover_Serif_Display-Italic.woff
    Source is a UFO file. Generate TTF.
        Failed:
        Traceback (most recent call last):
          File "/Users/rob/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/webFormats/__init__.py", line 553, in run
          File "/Users/rob/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/webFormats/__init__.py", line 433, in _convertPath
          File "/Users/rob/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/webFormats/__init__.py", line 326, in _getTempTTF
          File "/Users/rob/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/webFormats/__init__.py", line 132, in generateTTF
          File "lib/fontObjects/robofabWrapper.pyc", line 3901, in generate
          File "lib/fontObjects/doodleFont.pyc", line 882, in generate
          File "/Applications/RoboFont.app/Contents/Resources/lib/python2.7/fontCompiler/compiler.py", line 127, in generateFont
          File "/Applications/RoboFont.app/Contents/Resources/lib/python2.7/fontCompiler/baseCompiler.py", line 309, in compile
          File "ufo2fdk/makeotfParts.pyc", line 66, in compile
          File "ufo2fdk/makeotfParts.pyc", line 81, in setupFile_outlineSource
          File "/Applications/RoboFont.app/Contents/Resources/lib/python2.7/fontCompiler/ttfCompiler.py", line 261, in compile
          File "/Applications/RoboFont.app/Contents/Resources/lib/python2.7/fontTools/ttLib/__init__.py", line 216, in save
          File "/Applications/RoboFont.app/Contents/Resources/lib/python2.7/fontTools/ttLib/__init__.py", line 648, in _writeTable
          File "/Applications/RoboFont.app/Contents/Resources/lib/python2.7/fontTools/ttLib/__init__.py", line 659, in getTableData
          File "/Applications/RoboFont.app/Contents/Resources/lib/python2.7/fontTools/ttLib/tables/_f_p_g_m.py", line 14, in compile
          File "/Applications/RoboFont.app/Contents/Resources/lib/python2.7/fontTools/ttLib/tables/ttProgram.py", line 222, in getBytecode
          File "/Applications/RoboFont.app/Contents/Resources/lib/python2.7/fontTools/ttLib/tables/ttProgram.py", line 396, in _assemble
        AssertionError: PUSHW value out of range 262144

TTFAutoHint options don’t seem to be honored

All of my WebFonts Reports end with this:

TTFAutohint options:
********************
addTTFAutoHintInfo     = False
dwClearType            = False
fallbackScript         = False
gdiClearType           = True
grayScale              = False
hintRangeMaximum       = 50
hintRangeMinimum       = 8
hintingLimit           = 200
noHintingLimit         = False
noXHeightIncreaseLimit = False
overRideFontLicense    = False
preHinting             = False
symbolFont             = False
xHeightIncreaseLimit   = 14

Despite my settings looking like this:

Screenshot 2023-03-30 at 5 48 49 PM

Does this mean the TTFAutohint preferences aren't being honored?

Generating no fonts

Frederik, pardon me if this isn't a real issue.
I've noticed it's possible to click "Generate" without any fonts loaded.
You get a report and of course, no fonts.

Batch closes open fonts, unlike previous version

When I click "Add Open Fonts" and then "Generate" my open fonts are closed by Batch. In the previous version which worked with RF 1.8 (commit 6750671 and before) this didn't happen.

For me this is a bug and not a feature, because many times I want to generate and keep the fonts open. There could be an option to "Close fonts after generating" if this is desired, but I don't think it's good as a default because it's unexpected. Thanks for your consideration!

Error when generating too many fonts

Error when generating too many fonts. After about 125 UFOs there's a memory leak and the fonts don't generate anymore. Once I restart RF they can generate again.

Variation Font axis tag

The tag for an axis in the designspacedocument is not used in the generated font. Instead it will use the name of the axis and than the first four characters.

[feature request] add "Generate Failed" message

–Would be nice if Batch gave a "Generate Failed" message the way RF > File> Generate does when there's a problem. I know this is listed with the full traceback in the …Report.txt, but I think it would be helpful to have some indication in the UI. Ideally this would wait until the end and briefly list which files failed. For example:

Generate Failed:
FontName-Bold.ufo
FontName-Italic.ufo
FontName-Regular.ufo

See report for an error log.

–Also, would be helpful in the …Report.txt if you gave a short summary at the top of the text listing just the fonts that failed, with "see below for full error log".

–Batch always creates a "Web Fonts Report.txt" file in the destination even when the files fail, but when I generate using the "Batch Generate" section I get the error listed in the RF output window when fonts don't generate, and only get the "Batch Generate Report.txt" when the fonts succeed. I would expect these to behave the same way, whether they fail or not, and the same for "Web Fonts" and "Batch Generate".

–Perhaps there could be a "Generate Report" option to output a …Report.txt file (default = On) and if this option is unchecked then the output will only print to RF Output window? Would be nice to have this option because in early stages when I'm troubleshooting I DO want the report. And once I know things are good and just making tiny changes I usually DO NOT want the report because I always have to throw this file away before sending font data to client.

Thanks for your consideration!

Variable font export jumbles glyphs in RF4

Same designspace in RF3 and RF4.

Batch in RF3 makes the font with the correct glyphs:

Screen Shot 2021-08-03 at 10 35 10 AM

Batch in RF4 generates a jumble:

Screen Shot 2021-08-03 at 10 35 18 AM

Difference is that fonttools in RF3 is 4.8.1, RF4 is 4.25.0.

Something changed, looking into it.

ImportError: No module named reverseContourPen

Hi Frederik, I'm getting an error when I try to install Batch - it says I'm missing reverseContourPen. I've tried reinstalling FontTools / FontMake and cu2qu. Just wondered if you had any advice how to resolve this error.

Thanks in advance.

Traceback (most recent call last):
  File "main.py", line 10, in <module>
  File "/Users/jeremymickel/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/toolBox.py", line 19, in <module>
  File "/Users/jeremymickel/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/variableFontGenerator/__init__.py", line 15, in <module>
  File "build/bdist.macosx-10.13-intel/egg/cu2qu/ufo.py", line 33, in <module>
  File "build/bdist.macosx-10.13-intel/egg/cu2qu/pens.py", line 4, in <module>
ImportError: No module named reverseContourPen

variation fonts improvements

  • master on the default of all axis seems to be required by fontTools, spec: change the default of each axis so it fits the given default/default master
  • masters not at the extremes of an axis: add Can Extrapolate to fit axis extremes checkbox
  • masters outside the extremes of an axis: either clip by generating new master on the min/max of axis or extend the axis min/max, add some sort of "master are stronger then axes" checkbox
  • report and ignore non compatible glyphs, groups, kerning, info (you are in the middle of a design process)
  • design space with no masters
  • design space with multiple master on the same location
  • design space with mis aligned masters
  • list all extra added kerning pairs

Unable to add files via the "Open" button

I noticed that when you hit the "Open" button at the top of the window, all the kinds of files one might want to add (UFOs, designSpace files) are unselectable. You can add them fine via drag-and-drop, but for some reason not via the button.

One Generate button to rule them all!

I love the Export in Sub Folders option, but it only works within each panel. What if one could select all the types of fonts one wants to generate (web, desktop, variable, what-have-you), hit Generate, and watch as something like the following folder tree builds and fills in front of one’s eyes?

Desktop > OTF ( > [files] ), TTF ( > [files] )
Web > WOFF2 ( > [files] ), TTF ( > [files] )
Variable > WOFF2 ( > [files] ), TTF ( > [files] )

Desktop and Web could easily use the same input from the Fonts section, but a lingering question is whether Variable Fonts would need its own unique concurrent section for designspace files.

Export in Sub Folders behaves differently between webfonts and desktop

When setting Export in Sub Folders is checked, the Batch Generate panel generates fonts in subfolders that are named after the file format.

The Web Fonts panel generates fonts in cascading subfolders: FamilyName > StyleName > [one or a few fonts].

I think the first organizational scheme is the way to go for both.

Generating CFF-flavored webfonts

Currently all fonts are converted to TTF when generating webfonts. This makes sense for some things like EOT, but it'd be nice to have the option of choosing TTF- or CFF-flavored fonts for each format.

Axis maps break variable font generation

When attempting to generate a variable font from a designSpace file that has axis maps, like so:

<axis tag="wght" name="Weight" minimum="300" maximum="700" default="400">
	<labelname xml:lang="en">Weight</labelname>
	<map input="300" output="340" />
	<map input="500" output="485" />
	<map input="600" output="575" />
</axis>

… the process fails without providing the usual Batch Generated Variable Fonts Report.txt or any readout in the Output window. In the log, I get the following traceback:

>> Traceback (most recent call last):
>>   File "/Users/Nick/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/batchTools.py", line 115, in runTask_
>>   File "/Users/Nick/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/variableFontGenerator/__init__.py", line 84, in run
>>   File "/Users/Nick/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/variableFontGenerator/__init__.py", line 286, in generateVariationFont
>>   File "/Users/Nick/Library/Application Support/RoboFont/plugins/Batch.roboFontExt/lib/variableFontGenerator/__init__.py", line 380, in makeMasterGlyphsCompatible
>> AttributeError: 'NoneType' object has no attribute 'name'

The same designSpace file with the axis maps removed generates a working variable font as expected.

I'm using Batch 1.9.8, run from RoboFont 3.3b (build 1905221146).

Here are some files to test the issue: Test.zip

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.