小编UNI*_*orn的帖子

如何使用音乐字体 Bravura Text?

我正在尝试使用名为Bravura Text的 Open Type 音乐字体。我想在我当前正在开发的应用程序中使用该字体。

\n

我对 Bravura Text 的功能做了一些研究,字体的文档指出,可以写笔记并调整它们在五线谱上的垂直位置。有特殊字符可以升高/降低五线谱上的符头来代表不同的音调。

\n

我尝试在 Word 2013、Open Office Writer 和 Libre Office Writer 等文本应用程序中使用该功能。但我没能升高/降低音符头。我所能看到的只是符头位于其默认位置,即音调 B(位于 5 线谱表的中线上)。

\n

文档文件bravura-text.md介绍了如何调整垂直位置:

\n
\n

Bravura Text 使用 OpenType 连字来修改符号的默认垂直位置。在 OpenType 字体中,连字是一种字形替换,其中两个或多个字形被另一个单个字形替换。这通常用于文本字体,为特定的字母组合(例如“fi”或“fl”)产生优雅的外观。

\n

在 Bravura Text 中,连字用于调整各个符号的垂直位置。首先,输入与要更改垂直位置的量相对应的代码点,然后输入符号本身的代码点。如果您使用的应用程序支持 OpenType 连字,您应该会看到符号出现在所需的垂直位置。

\n
\n

根据邮件列表回复,我发现文档中提到的垂直定位字符的代码点是错误的。正确的代码点是 U+EB90\xe2\x80\x93U+EB9F。

\n

在我的示例中,我使用了邮件列表答案中提到的正确代码点。我将 Word 2013 配置为启用连字,并输入了以下代码点:\n U+E014 U+EB9E U+E0A4

\n
    \n
  • U+E014(“staff5Lines”)用于显示 5 行五线谱
  • \n
  • U+EB9E(“staffPosLower7”)用于将符头降低 7 个半音。
  • \n
  • U+E0A4(“noteheadBlack”)用于在降低的五线谱位置上显示符头
  • \n
\n

我认为这就是文档所说的关于通过调整的垂直位置输入注释的内容,但这在我的文本应用程序中不起作用。我所看到的只是中间五线谱线上代表音符 B 的符头。

\n

有没有 Open Type …

fonts notation opentype ligature

5
推荐指数
1
解决办法
4512
查看次数

f:当commandButton导航到页面时,viewAction被忽略

我有JSF 2.2功能的问题<f:viewAction action="#{...}/>.我把这个标签放在我的XHTML-Page中,它被称为viewActionStart.xhtml:

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
<h:head />
<h:body>
    <f:view>
        <f:metadata>
            <f:viewAction action="#{redirect.getView()}" onPostback="true"
                immediate="true" />
        </f:metadata>
    </f:view>
    <h:outputText value="If you see that text, the viewAction was not performed." />
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果我直接访问此XHTML页面,一切正常:redirect.getView()调用该方法并执行重定向到另一个页面.

现在我有了我的登陆页面,它显示在viewActionStart-Page之前.有一个按钮,基本上应该导航到我的viewActionStart-Page来显示<f:viewAction>效果.以下代码来自此着陆页index.xhtml:

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
    <f:view>
        <h:form>
            <h:commandButton action="viewActionStart.xhtml"
                value="To f:viewAction Page" />
        </h:form>
    </f:view>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果我点击该命令按钮,则会显示viewActionStart.xhtml的内容.为什么JSF忽略了<f:viewAction>?我不明白为什么viewAction每个页面加载不起作用.我尝试了那些onPostback …

jsf tomcat7 jsf-2.2

4
推荐指数
1
解决办法
1983
查看次数

如何搭建沙箱环境

嗨,SecurityManager 专家们;-)

我编写了一个小型插件框架,它使用单独的隔离类加载器加载插件。为了成功取消部署插件,重要的是要确保应用程序不保留对插件类加载器加载的类的引用。

Java 中有一个称为 shutdown hook 的功能,它允许客户端代码注册一个线程,该线程在 JVM 被请求关闭时执行。这意味着 JVM 可能会持有对插件类加载器加载的类的引用。

我的第一次尝试是安装一个拒绝添加关闭挂钩的 SecurityManager。这完全有效并拒绝所有添加关闭挂钩的尝试。有趣的是,我意识到,并不是插件本身想要添加关闭挂钩。SunFontManager该插件只是通过加载字体来触发 AWT/Swing 内部机制(准确地说:) 。反过来,它又SunFontManager添加了 shutdown hook,以便在 JVM 退出时执行一些内部处理。我不想否认插件加载字体(因为它必须这样做),并且我不想否认 Java 内部添加它们的东西。

对我来说,我似乎必须向代码授予比通常更多的权限(如果sun.*|java.*|javax.*包位于堆栈跟踪中..uuuhmm...丑陋)。但这打破了安全框架的约定,该约定假定客户端代码不能比调用它的代码拥有更多的特权。

我如何区分不是插件代码而是 Java 内部想要做某事?或者有没有其他方法可以确保不会因为否认某些事情而破坏内部结构?

发生情况的示例

为了让事情更清楚,以下是我的应用程序中实际发生的情况。我安装了一个自定义 SecurityManager,它应该拒绝addShutdownHook由插件直接执行,但如果作为 Java 内部类的副作用执行,则不应拒绝这些调用。

上下文: 调用:
----------------------------------------------------------
App类加载器应用程序
                        |
PluginClassloader PluginObject.init()
                        |
AppClassloader Font.create()
                        |
                    AccessController.doPrivileged(...) {
                        Runtime.addShutdownHook(...)
                    }

SecurityManager 是使用System.setSecurityManager()以下命令安装的:

@Override
public void checkPermission(java.security.Permission perm) {
  if (perm.getName().equals("shutdownHooks")) {
    if (threadContextClassLoaderIsPluginClassLoader()) {
      throw new SecurityException("Installing shutdown hooks is not allowed.");
    } …
Run Code Online (Sandbox Code Playgroud)

java securitymanager

3
推荐指数
1
解决办法
2045
查看次数

Spring Boot:如何使用 @Validated 注释在 JUnit 中测试服务?

我正在尝试为我的 Spring Boot 应用程序构建一组约束验证器。我想构建一些验证注释,例如@NotNull. 顺便说一句:验证应该支持验证组。

所以我有一个带有验证注释的简单项目模型:

public class Item {
    @NotNull(groups=OnCreate.class) // Not Null on validation group 'OnCreate'
    private String mayNotBeNull;

    // Constructors and getter/setter stuff.
}
Run Code Online (Sandbox Code Playgroud)

然后我使用经过验证的服务包装了持久性逻辑:

@Service
@Validated
public class MyService {
    public Item create(@Validated(OnCreate.class) Item item) {
        Item savedItem = repository.save(item);
        return savedItem;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想测试这个服务而不启动一个完整的 MVC 测试(这将启动所有 REST 控制器和我不需要的东西)。

我开始写我的测试:

@ContextConfiguration(classes = {
ItemRepository.class, MyService.class, LocalValidatorFactoryBean.class
})
@RunWith(SpringRunner.class)
public class PlantServiceTest {

  @MockBean
  private ItemRepository repository;

  @Autowired
  private MyService service;

  @Autowired
  private …
Run Code Online (Sandbox Code Playgroud)

spring-mvc spring-boot

3
推荐指数
1
解决办法
5264
查看次数